历史上的今天
返回首页

历史上的今天

今天是:2025年07月16日(星期三)

正在发生

2018年07月16日 | 51单片机的中断功能及其相关的寄存器

2018-07-16 来源:eefocus

51单片机中断系统

引起CPU中断的根源,称为中断源,中断源向CPU提出中断请求,CPU暂时中断原来的事务A,转去处理事件B,对时间B处理完毕后,再回来原来的地方(断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。

中断优先级决定了中断是否能够实现嵌套,52单片机一共有六个中断源

中断源序号(C默认中断级别
INT00最高
T012
INT123
T134
TI/RI45
T25最低

 51系列单片机的中断有三种,外部中断, 定时器/计数器中断,串行口中断,中断优先级别如表格

中断允许寄存器IE以及中断优先级寄存器IP

IE
位序D7D6D5D4D3D2D1D0
位符EA--ET2ESET1EX1ET0EX0
位地址AFH--ADHACHABHAAHA9HA8H


IE在特殊功能寄存器中(sfr)可进行位寻址,单片机复位时IE全清零

EA----全局中断允许位

         EA=1,打开全局中断控制,由各个中断控制位确定相应的打开或者 关闭中断

         EA=0,禁用所有中断

除--为无效位外,其他位分别为各个中断的允许位,置1打开中断,置零关闭中断

IP
位序号D7D6D5D4D3D2D1D0
位符号------PSPT1PX1PT0PX0
位地址------BCHBBHBAHB9HB8H


IP位于特殊功能寄存器中(sfr)可进行位寻址,单片机复位时IP全清零


51单片机系列中,高优先级 能够打断低优先级中断以形成中断嵌套,同优先级之间或者低级对高优先级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,在没有设置的中断优先级的情况下,按照默认中断级别响应中断,在设置中断优先级后,则按设置顺序确定响应的先后顺序

51系列单片机的定时器中断

 单片机的定时器系统

51单片机内有两个16位可编程计数器/定时器(16位加1计数器,分由高八位和低八位两个寄存器组成),分别为T0( TH0,TL0 )、T1( TH1,TL0 ),另52单片机内部多一个T2。它们既有定时器功能又有计数功能,通过设置相关的特殊功能寄存器可以使用它们。定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时器功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计满后,会产生中断。


加1计数器的计数脉冲有两个来源:一个是系统的时钟震荡器输出脉冲经12分频后送来,另一个是由T0或是T1引脚输入的外部脉冲源,每一个脉冲计数加1,计满再一个脉冲则归零,向CPU请求中断。


先来了解定时器,计数器功能暂不介绍

定时器/计数器工作方式寄存器TMOD以及定时器/计数器控制寄存器TCON

TMOD
D7D6D5D4D3D2D1D0
符号GATEC/TM1M0GATEC/TM1M0


TMOD位于特殊功能寄存器中,字节地址89H,不能进行位寻址,单片机复位全清零0

GATE----门控制位

  GATE=0,定时器计数器启动与停止仅受TCON寄存器中的TRX(X=0,1)控制

  GATE=1,定时器计数器启动与停止由外部中断引脚(INT0或INT1)上的电平状态来共同控制

C/T----定时器或者计数器模式选择位

M1M0--工作方式选择位

每个定时器都有4中工作方式,它们由M1M0来设定

  

定时器/计数器4种工作方式
M1M0工作方式
00方式0,为13位定时器/计数器
01方式1,为16位定时器/计数器
10方式2,8位初值自动重装的定时器/计数器
11方式3,仅适用于T0,分成两个8位计数器,T1停止计数
TCON
位序号D7D6D5D4D3D2D1D0
位符号TF1TR1TF0TR0IE1IT1IE0IT0
位地址8FH8EH8DH8CH8BH8AH89H88H

 

TCON位于特殊功能寄存器中(SFR),可进行位寻址

TF1/TF0--------定时器/计数器溢出标志位

   当定时器计满溢出时,由硬件使其置1,并且向CPU申请中断,进入中断服务程序后,由硬件自动清0。

TR1/TR0-------定时器运行控制位

   当GATE=1,当相应的外部中断引脚(INT1/INT0)为高电平时,TR1/TR0置1启动定时器,当GATE=0,TR1/TR0置1启动定时器
IE1/IE0--------外部中断请求标志位

IT1/IT0---------外部中断触发方式选择位

        0为电平触发模式

        1为跳变沿触发模式

定时器中断应用举例->方式1

        16位定时器/计数器

 在写单片机程序之前,需要对定时器以及中断寄存器做初始化设置

        ①对TMOD赋值,确定定时器工作方式

        TOMD=0x01;-----即系设定定时器0为16位定时器,GATE=0此时仅由TR0控制启动定时器0

        ②计算初值,并将初值写入TH0/TL0

        ③对IE赋值,开放中断

        ④对TR0/TR1置位,开始定时或者计数

    

        关于计算初值,前面提到,加1计数器的脉冲源为一个是系统的时钟震荡器输出脉冲经12分频后送来,另一个是由T0或是T1引脚输入的外部脉冲源,每一个脉冲计数加1,计满再一个脉冲则归零,向CPU请求中断。

         这里使用系统的时钟振荡器输送经12分频之后送来的脉冲源,由此,1个机械周期等于12个时钟周期。

      

         令单片机的时钟晶振频率为f,则一个机械周期的时间为[(1/f)*12 ] 。51单片机常用的外部晶振为12MHz和11.0592MHz,若使用12MHz的晶振,则机械周期为1us(微秒),即系定时器寄存器每经一微秒就加1。

         我们令定时器寄存器(TH0和TL0)的初值为(2^16 - N),此时每经N微秒发生一次中断。(2^16=65536)

         将初值装入TH0、TL0的方式: TH0=(65536-N)/256;  TH0=(65536-N)%256;

#include

sbit led1=P1^0;

unsigned char num;

void main()

{

        TMOD=0x01; //设定定时器0为工作方式1

        TH0=(65536-50000)/256;          //定时器寄存器装初值

        TL0=(65336-50000)%256;

        EA=1;                           //全局中断允许 

        ET0=1;                          //定时器0中断允许

        TR0=1;                          //启动定时器0

        while(1);

 

}

void timer0() interrupt 1  

{

TH0=(65536-50000)/256;   //重装初值

TL0=(65536-50000)%256;

num++;

        if( 20==num)                   //每20*50ms 即系1秒让led1取反一次

         {

                  num=0;

                  led1=~led1; 

         }

}

这是一个简单的程序,让I/O口驱动一个led灯,每一秒改变一次状态。


一旦开启定时器,其便开始计数,当计数溢出时候,自动进入中断服务程序,计数器自动计数,知道程序执行结束才停止。所以,中断服务程序的代码不可以过长,以免中断服务程序未执行完,下一次中端来临,便会丢失中断。


推荐阅读

史海拾趣

Bombardier Inc公司的发展小趣事

进入20世纪中叶,庞巴迪公司在航空领域的业务持续扩大。其生产的PBV-1A水上巡逻机,不仅装备了加拿大空军,还出口到美国海军。这一时期,庞巴迪在航空电子系统的集成和创新上取得了重要突破,提高了飞机的性能和安全性。这些技术进步使得庞巴迪在全球航空领域树立了良好的声誉。

ConnectBlue公司的发展小趣事

ConnectBlue公司成立于2000年,当时正值无线通信技术快速发展的时期。公司创始人凭借对无线技术的深刻理解和市场需求的敏锐洞察,决定专注于无线系统的研发和生产。起初,公司面临资金紧张和技术难题,但创始团队凭借坚韧不拔的精神,克服了一个又一个困难,成功开发出了一系列具有竞争力的无线模块产品。

CTC [Compact Technology Corp.]公司的发展小趣事

为了进一步扩大市场份额,CTC公司开始寻求与其他行业的跨界合作。一次与汽车制造商的洽谈中,CTC公司提出将自身的电子技术应用于汽车制造中,以提升汽车的性能和智能化水平。双方经过深入交流,达成了合作意向。这一跨界合作不仅为CTC公司带来了新的业务领域,也推动了汽车行业的创新发展。

Dover Corporation公司的发展小趣事

Dover Corporation的电梯业务始于1955年,当时Dover Elevator从Rotary Lift中分离出来,成为一家独立运营的公司。此后,公司通过一系列的收购,如谢泼德华纳电梯公司、Acme Elevator等,迅速扩大了其电梯业务。这些收购不仅使Dover成为美国第三大电梯公司,也为其在电梯行业中的持续领先地位奠定了基础。

Gore公司的发展小趣事
在电力系统中,三电平直流变换器可用于直流输电、电力电子变压器等领域,提高电网的稳定性和效率。
Digi International公司的发展小趣事

Digi International成立于1985年,最初是一家位于明尼苏达州的公司。随着业务的不断发展,公司于1989年进行了首次公开募股,并随后重组为特拉华州的公司。Digi International在纳斯达克全球精选市场上交易,股票代码为DGII。这一转型不仅为公司带来了更多的资金支持,也为其后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

PADS layout BOM速成工具(自动生成EXCEL文档)

power pcb 自动生成excel文档BOM工具 附件中附带有使用方法! [ 本帖最后由 332 于 2008-11-13 13:42 编辑 ]…

查看全部问答>

如何成为单片机高手

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对超过书的价值。当然如果 ...…

查看全部问答>

判断网线的好坏:除了万用表,还能看重量

线缆的主要组成部门在于铜芯的质量,它里面是否含其他金属以及粗细,都是取决于整批线路好坏的根本,所以重量的测试方法只能是测试方法之一,而且微不足道。要看测试还得用专门的仪器查看网线的各项数据! 另外,请问用万用表如何测?…

查看全部问答>

从事嵌入式开发的牛人请进来看看

我们公司目前要招一批从事嵌入式开发的人才,如果您有意加入,请将您的简历发送给我。 公司名称:中兴通讯(ZTE) 工作地点:南京 本人邮箱:zhuang.li2@zte.com.cn 主要职责: 路由器平台软件的开发 招聘要求: 1.本科毕业后工作三年以上, ...…

查看全部问答>

电棍拐杖

这款拐杖不仅可以根据需要调节长度,还带有方便的照明手电筒,更为特别的是:拐杖底部安装了高压电击枪,帮您在特殊情况下脱离险境。…

查看全部问答>

本人要做一个音频信号源求助 北京 有偿

本人要做一个音频信号源求助 北京 有偿 自己已试做了一个噪音大去不掉。…

查看全部问答>

MSP430 模拟开关 48路AD转换

LZ想用3个16掷1的模拟开关加上430自带的AD转换模块,来实现48路AD转换,行的通么? 片子选型改注意什么? 能不能在10ms内完成48路的AD转换? 求各路大神指点迷津。。。 来杭州有bg [ 本帖最后由 namemore 于 2012-4-20 19:04 编辑 ]…

查看全部问答>

什么器件可以测能见度

请教各位大侠,什么器件可以测能见度?…

查看全部问答>