1、MCS-51MCS-51单片机的中断系单片机的中断系统统 MCS-51 MCS-51单片机的中断系统单片机的中断系统 1.1 1.1 中断的概念中断的概念 当当CPUCPU正常处理某个事件时,由于内部事件或外设请求,引正常处理某个事件时,由于内部事件或外设请求,引起起CPUCPU暂时中止当前正在运行的程序,转去执行请求中断的外设暂时中止当前正在运行的程序,转去执行请求中断的外设或内部事件的中断服务子程序,中断服务程序执行完毕,再返或内部事件的中断服务子程序,中断服务程序执行完毕,再返回原来被中止的地方,继续原来的工作。这一过程称为中断。回原来被中止的地方,继续原来的工作。这一过程称为中断。实现
2、中断功能的部件称为中断系统,请示实现中断功能的部件称为中断系统,请示CPUCPU中断的请求源称为中断的请求源称为中断源。中断源。主程序的中断处理主程序的中断处理1.2 CPU1.2 CPU响应及处理中断机制响应及处理中断机制 一般来说,根据中断源的轻重缓急排序,一般来说,根据中断源的轻重缓急排序,CPUCPU优先处理最优先处理最紧急事件的中断请求源。也就是说,需要对各个中断源设定紧急事件的中断请求源。也就是说,需要对各个中断源设定相应的优先级,相应的优先级,CPUCPU总是最先响应级别最高的中断。中断源可总是最先响应级别最高的中断。中断源可以分为两个中断优先级:高优先级和低优先级。用户可以用以
3、分为两个中断优先级:高优先级和低优先级。用户可以用关中断指令或复位指令来屏蔽所有中断请求,也可以用开中关中断指令或复位指令来屏蔽所有中断请求,也可以用开中断指令使断指令使CPUCPU接收中断申请。接收中断申请。1.3 1.3 中断源及中断请求标志中断源及中断请求标志 中断系统:由中断标志寄存器、中断源允许寄存器、中断优先中断系统:由中断标志寄存器、中断源允许寄存器、中断优先级寄存器及中断查询电路组成。级寄存器及中断查询电路组成。1.1.中断源中断源 (1 1)外部中断请求)外部中断请求0 0:由:由 (P3.2P3.2管脚)输入,低电平或下管脚)输入,低电平或下降沿触发。降沿触发。(2 2)外
4、部中断请求)外部中断请求1 1:由:由 (P3.3P3.3管脚)输入,低电平或下管脚)输入,低电平或下降沿触发。降沿触发。(3 3)内部定时器)内部定时器/计数器计数器0 0中断请求:由中断请求:由T0T0溢出引起。溢出引起。(4 4)内部定时器)内部定时器/计数器计数器1 1中断请求:由中断请求:由T1T1溢出引起。溢出引起。(5 5)内部中断请求)内部中断请求TI/RITI/RI:串行:串行I/OI/O中断,串行口完成一帧字符发中断,串行口完成一帧字符发送送/接收后引起。接收后引起。0INT1INT2.2.中断请求标志中断请求标志1 1)TCONTCON寄存器中的中断标志寄存器中的中断标志
5、 D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TCONTCON是定时是定时/计数器计数器T0T0、T1T1的控制寄存器,格式如下:的控制寄存器,格式如下:2 2)SCONSCON寄存器中的中断标志寄存器中的中断标志 SCONSCON为串行口控制寄存器:为串行口控制寄存器:SM0SM1SM2RENTB8RB8TIRID7 D6 D5 D4 D3 D2 D1 D01.4 1.4 中断控制及中断优先级中断控制及中断优先级1.1.中断允许控制寄存器中断允许控制寄存器IEIE(字节地址(字节地址A8HA8H)D7 D6 D5 D4 D3 D2 D1 D0
6、EA-ET2ESET1EX1ET0EX0使用汇编语言程序控制中断请求信号的允许使用汇编语言程序控制中断请求信号的允许 或禁止的程序示例如下:或禁止的程序示例如下:CLR EA ;禁止所有中断请求禁止所有中断请求 SETB EX0 ;允许允许 中断请求,注意此时中断请求,注意此时EA=0,中断还不能被响应,中断还不能被响应 CLR EX1 ;禁止禁止 中断请求中断请求 SETB EA ;允许总中断控制,此时允许总中断控制,此时 中断请求可以被中断请求可以被CPU响应响应 0INT1INT2.2.中断优先控制寄存器中断优先控制寄存器IP IP 二级中断的嵌套过程二级中断的嵌套过程 低级低级中断程序
7、中断程序1高级高级中断程序中断程序2主程序主程序继续执行继续执行主程序主程序返回返回返回返回 为了实现上述功能,为了实现上述功能,MCS-51MCS-51中断系统设置了中断优先级寄存器中断系统设置了中断优先级寄存器IPIP统一管理各个中断源的中断优先级。统一管理各个中断源的中断优先级。如果如果CPUCPU接收到几个相同优先级的中断请求源时,响应哪一个接收到几个相同优先级的中断请求源时,响应哪一个中断申请要取决于一个内部的硬件查询序列,此时应按照下表所中断申请要取决于一个内部的硬件查询序列,此时应按照下表所示的优先权结构先后响应中断请求。示的优先权结构先后响应中断请求。中中 断断 源源中断优先级
8、中断优先级外部中断外部中断0(IE0)最高最高定时器定时器T0中断(中断(TF0)外部中断外部中断1(IE1)定时器定时器T1中断(中断(TF1)串行口中断(串行口中断(RI、TI)最低最低D7 D6 D5 D4 D3 D2 D1 D0-PSPT1PX1PT0PX0其各位格式为:其各位格式为:1.5 1.5 中断响应及中断处理过程中断响应及中断处理过程 1 1中断响应的条件中断响应的条件中断响应中断响应的条件的条件CPU无高级或同级的中断无高级或同级的中断服务。服务。当前指令已执行到最后一个当前指令已执行到最后一个机器周期,以确保当前指令机器周期,以确保当前指令的完整执行。的完整执行。如果正在
9、执行的是如果正在执行的是RETIRETI、IEIE或或IPIP的指令,需要保证执行的指令,需要保证执行完该指令及其后的另一条指完该指令及其后的另一条指令。令。1完成当前指令后立即完成当前指令后立即终止现行程序,置位终止现行程序,置位相应的优先级状态触相应的优先级状态触发器,以阻断同级和发器,以阻断同级和低级中断。低级中断。2将断点地址压入堆栈,将断点地址压入堆栈,同时清除中断请求标志同时清除中断请求标志(TI和和RI除外)。除外)。3把对应的中断源入口把对应的中断源入口地址送入程序计数器地址送入程序计数器PCPC,转至相应的中断,转至相应的中断服务程序。服务程序。2.2.中断响应过程中断响应过
10、程3.3.中断处理和返回中断处理和返回 中断处理即为执行中断服务程序。中断服务程序从中断入口地址中断处理即为执行中断服务程序。中断服务程序从中断入口地址开始,首先要保存有关的寄存器内容,即保护现场;完成中断源请求开始,首先要保存有关的寄存器内容,即保护现场;完成中断源请求的服务后,还要恢复这些寄存器内容(恢复现场),并在中断服务程的服务后,还要恢复这些寄存器内容(恢复现场),并在中断服务程序的末尾,安排一条返回指令,把断点地址送回程序计数器序的末尾,安排一条返回指令,把断点地址送回程序计数器PCPC,使程,使程序返回原断点处,结束中断过程。序返回原断点处,结束中断过程。4.4.中断响应时间中断
11、响应时间 中断响应时间是指从查询中断请求标志位到转至中断服务程序入中断响应时间是指从查询中断请求标志位到转至中断服务程序入口地址所需的时间。口地址所需的时间。1对于定时器的溢出中对于定时器的溢出中断及边沿触发的外部断及边沿触发的外部中断,中断,CPUCPU在响应中在响应中断后即有硬件自动清断后即有硬件自动清除相关的中断请求标除相关的中断请求标志。志。2对于串行口中断,对于串行口中断,CPU在响应中断后,在响应中断后,必须在中断服务程序中必须在中断服务程序中用软件清除中断标志,用软件清除中断标志,硬件没有相关措施。硬件没有相关措施。3对于电平触发的外部对于电平触发的外部中断,仅靠清除中断中断,仅
12、靠清除中断标志是不能彻底撤除标志是不能彻底撤除中断请求的。必须在中断请求的。必须在中断响应后把外部输中断响应后把外部输入端信号从低电平强入端信号从低电平强制为高电平,才能彻制为高电平,才能彻底解决中断请求的撤底解决中断请求的撤除问题。除问题。5.5.中断请求的撤除中断请求的撤除 1.6 1.6 中断的应用及编程中断的应用及编程 中断初始化程序实际上就是对几个特殊功能寄存器的相关中断初始化程序实际上就是对几个特殊功能寄存器的相关控制位进行赋值,具体步骤如下:控制位进行赋值,具体步骤如下:(1 1)开启相应中断源的中断允许。)开启相应中断源的中断允许。(2 2)设定所有中断源的中断优先级。)设定所
13、有中断源的中断优先级。(3 3)规定外部中断的触发方式(电平触发还是边沿触发)。)规定外部中断的触发方式(电平触发还是边沿触发)。【例【例1 1】假设系统的堆栈为】假设系统的堆栈为61H7FH61H7FH,允许外部,允许外部0 0中断、定时器中断、定时器T0T0中断,并设定中断,并设定 为高优先级,采用边沿触发,其他中断为低优先为高优先级,采用边沿触发,其他中断为低优先级,则在主程序中的中断初始化程序如下:级,则在主程序中的中断初始化程序如下:MOV SP,#60H MOV SP,#60H SETB PX0 SETB PX0 SETB IT0 SETB IT0 SETB ET0 SETB ET
14、0 SETB EX0 SETB EX0 SETB EA SETB EA 【例【例2 2】若要求外部中断引脚】若要求外部中断引脚 采用边沿触发方式,处于高优先采用边沿触发方式,处于高优先级,初始化程序可以采用位操作指令,也可以用字节型指令进行编级,初始化程序可以采用位操作指令,也可以用字节型指令进行编制。制。位操作指令:位操作指令:SETB EASETB EA SETB EX1 SETB EX1 SETB PX1 SETB PX1 SETB IT1 SETB IT1 字节型指令:字节型指令:MOV IE,#84H MOV IE,#84H ORL IP,#04H ORL IP,#04H ORL T
15、CON,#04H ORL TCON,#04H 【例【例3 3】有有5 5个外部中断源个外部中断源EX1EX1、EX2EX2、EX3EX3、EX4EX4和和EX5EX5,如下图所,如下图所示。高电平时表示请求中断,要求执行相应中断服务程序,试编制程示。高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。序。EX2EX2EX3EX3EX4EX4EX5EX5EX1EX11 11 1 INT0 INT0 INT1 INT180C5180C51P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3 ORG 0000H LJMP MAIN ORG 0003H LJMP PINT0 ORG
16、 0013H LJMP PINT1 ORG 0100H MAIN:MOV SP,#60H ORL TCON,#05H SETB PX0 MOV IE,#0FFH ORG 1000H PINT0:PUSH Acc LCALL WORK1 POP Acc RETI ORG 2000H PINT1:CLR EA PUSH Acc PUSH DPH PUSH DPL SETB EA JB P1.0,LWK20 JB P1.1,LWK21 JB P1.2,LWK22 LCALL WORK23 LRET:CLR EA POP DPL POP DPH POP Acc SETB EA RETI LWK20:L
17、CALL WORK20 SJMP LRET LWK21:LCALL WORK21 SJMP LRET LWK22:LCALL WORK22 SJMP LRET【例【例4 4】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(从外中断(P3.2P3.2)引脚输入,行程)引脚输入,行程=轮胎周长轮胎周长运转圈数,设轮胎运转圈数,设轮胎周长为周长为2 m2 m,试实时计算出租车行驶里程(单位:,试实时计算出租车行驶里程(单位:m m),数据存于),数据存于32H32H、31H31H和和30H30H中。中。ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0030H START:MOV SP,#60H SETB IT0 MOV IP,#01H MOV IE,#81H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 LJMP MAIN ORG 0200H INT0:PUSH Acc PUSH PSW MOV A,30H ADD A,#2 MOV 30H,A CLR A ADDC A,31H MOV 31H,A CLR A ADDC A,32H MOV 32H,A PUSH PSW PUSH Acc RETI
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。