单片机原理与应用1第5章MCS-51单片机的中断系统【本章内容】本章主要介绍MCS-51单片机中断系统的结构、工作原理、控制方法等。【项目驱动的学习要点】应用项目中对中断源的利用。应用项目中如何通过中断进行时间调校。应用项目中的中断服务程序流程图分析。应用项目中的中断服务源程序的设计与分析。单片机原理与应用2第5章MCS-51单片机的中断系统5.1MCS-51中断系统概述5.2MCS-51的中断控制5.3MCS-51的中断处理5.4MCS-51外部中断源的扩展练习题END单片机原理与应用35.1MCS-51中断系统概述5.1.1中断的概念5.1.2中断系统的结构5.1.3中断源5.1.4中断请求标志单片机原理与应用45.1.1中断的概念1.中断的概念2.中断的作用单片机原理与应用51.中断的概念当CPU执行完现行程序的当前指令时,如果此时发生某一紧急事件请求CPU对其进行迅速处理,这种请求称为中断请求;发出中断请求的来源称为中断源;如果这个中断请求得到CPU的允许,CPU会暂时中止当前程序的运行,保存断点(下一条指令的首地址),转到中断源对应的中断入口,处理发出中断请求的紧急事件,这个过程称为响应中断;单片机原理与应用61.中断的概念处理中断请求的程序称为中断服务程序;CPU执行完中断服务程序后,再回到发生中断的断点继续执行原来的程序,这个过程称为中断返回;实现这种控制过程的部件称为单片机的中断系统;单片机的上述控制过程就称为中断,单片机的中断过程示意图如图5-1所示。单片机原理与应用7图5-1单片机中断过程示意图单片机中断控制过程:单片机原理与应用8(1)提高CPU的工作效率(2)便于实时处理(3)提高系统可靠性2.中断的作用单片机原理与应用9当单片机连接有外围设备时,通过采用中断技术,CPU在启动完外设后,不用专门等待外设,而是和外设同步并行工作,直到外设完成指定操作,向CPU提出中断请求时,CPU再暂时中止当前程序的执行而为外设服务,服务结束后再继续执行原程序。这样,不仅解决了因外设工作速度慢于单片机而导致CPU需要耗时等待的问题,而且可以允许CPU与多个外设并行工作,减少因等待或查询而耗费的时间,从而大大提高CPU的工作效率。(1)提高CPU的工作效率单片机原理与应用10采用中断技术后,凡是需要实时处理的事件,都可以设置成随时可向CPU发出中断请求,要求CPU进行实时处理。(2)便于实时处理单片机原理与应用11对于单片机运行过程中出现的各种异常情况,如断电、设备故障、运算出错等故障,可通过中断技术及时向CPU申请中断,以便进行自我诊断并及时进行处理,从而提高系统的可靠性。(3)提高系统可靠性单片机原理与应用125.1.2中断系统的结构MCS-51单片机中断系统由中断源、定时器/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE、中断优先级控制寄存器IP以及中断优先级排队与查询电路组成,如图5-2所示。单片机原理与应用13图5-2MCS-51单片机的中断系统结构MCS-51单片机的中断系统结构图5-2MCS-51单片机的中断系统结构单片机原理与应用14从图5-2可以看出,MCS-51系列单片机的中断系统有5个中断源和2个优先级。当中断源产生中断请求时,相应的标志位置为1,但中断是否能被CPU响应,则要受中断允许寄存器IE的控制,IE中的EA称为中断总控位、其他位称为中断分控位。对于允许响应的中断,通过中断优先级控制寄存器IP决定优先级别,并送到中断优先级排队与查询电路,CPU按照从高优先级到低优先级的顺序进行查询,首先响应高优先级的中断请求,再响应低优先级的中断请求。被CPU响应的中断请求,其相应的中断入口地址器被自动送到程序计数器PC中,于是CPU便转去执行相应的中断服务程序。说明:单片机原理与应用155.1.3中断源MCS-51单片机的5个中断源分别为:2个外部中断2个定时器/计数器溢出中断1个串行口中断单片机原理与应用161.外部中断源(、)外部中断0和外部中断1的中断请求信号,分别由外部中断请求输入引脚(P3.2)、(P3.3)输入,可以通过定时器/计数器控制寄存器TCON设定为低电平触发或负边沿触发。INT0INT1INT1INT0单片机原理与应用17单片机内部的2个定时器/计数器T0、T1是加1计数器,工作时可以对内部定时脉冲或者对从T0(P3.4)引脚或T1(P3.5)引脚输入的计数脉冲进行加法计数,当计数状态从“全1”加1变为“全0”时,定时器/计数器电路就会产生溢出中断请求信号。2.定时器/计数器溢出中断源(T0、T1)单片机原理与应用18串行口中断分为串行口发送中断和串行口接收中断两种,每当串行口发送或接收完一组串行数据时,串行口电路便会自动产生串行口中断请求。但要区分是接收还是发送中断请求,则需要通过对它们的中断标志位RI、TI进行查询才能知道。3.串行口中断源(RI或TI)单片机原理与应用195.1.4中断请求标志为了能及时发现有无中断源发出中断请求,MCS-51单片机在时序中规定,CPU执行程序过程中,总会在每个机器周期的S5P2期间,对中断系统的各个中断源进行取样。当有中断源发出中断请求时,就将对应的中断标志位置为1,然后在下一个机器周期内检测这些中断标志位的状态,以决定是否响应该中断。单片机原理与应用201.定时器/计数器控制寄存器TCON定时器/计数器控制寄存器TCON各位的定义如图5-3所示。图5-3定时器/计数器控制寄存器TCON各位定义(1)IE0:外部中断中断请求标志位。当CPU在每个机器周期的S5P2期间检测到引脚上的中断请求有效时,IE0由硬件自动置1;当CPU响应中断请求进入相应中断服务程序执行时,IE0被自动复位。(2)IE1:外部中断中断请求标志位。其控制作用和IE0相同。INT0INT0INT1单片机原理与应用21(3)IT0:外部中断触发方式控制位。当IT0=1时,为边沿触发方式(下降沿有效)。CPU在每个机器周期的S5P2期间取样引脚电平,如果在连续的两个机器周期检测到引脚由高电平变为低电平,即第一个周期取样到=1,第二个周期取样到=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,由硬件自动清除IE0标志。但应注意,为保证CPU能检测到负跳变,上的低电平持续时间至少应保持1个机器周期。当IT0=0时,为电平触发方式。CPU在每个机器周期的S5P2取样引脚电平,当取样到低电平时,置IE0=1表示向CPU请求中断;取样到高电平时,将IE0清0。INT0INT0INT0INT0INT0INT0INT0INT0INT0INT0单片机原理与应用22值得注意的是,在电平触发方式下,尽管CPU响应中断时,相应中断标志IE0或IE1能自动复位成0状态,但若外部中断源不能及时撤除它在或上的低电平,就会再次使已经变0的中断标志IE0或IE1置1,这是绝对不允许的。因此,电平触发型外部中断请求的撤除必须使或上的低电平随其中断被CPU响应而变为高电平。INT0INT0INT1INT1单片机原理与应用23由图5-4可见,当外部中断源产生中断请求时,D触发器被触发,其端输出低电平并送到单片机的引脚,该低电平被单片机CPU检测到后就使中断标志IE0置1,CPU响应中断请求便可转去执行中断服务程序。图5-4电平触发方式的外部中断请求撤除电路INT0电平触发方式的外部中断请求撤除电路单片机原理与应用24CPU执行上述的中断服务程序时,可在P1.0上产生一个宽度为2个机器周期的负脉冲。在该负脉冲作用下,D触发器的端被置位成l状态,上的电平因此而变高,从而撤除了其上的中断请求。为了撤除上的低电平,可以在中断服务程序开头加上如下指令。INTSUB:ANLP1,#0FE;P1.0=0ORLP1,#01H;P1.0=1CLRIE0……RETIINT0INT0INT0INT0单片机原理与应用25(4)IT1:外部中断触发方式控制位。其控制功能、注意事项与IT0相同。(5)TF0:定时器/计数器T0溢出中断请求标志位。T0启动后便从初值开始进行加1计数,直至最高位产生溢出时,向CPU发出溢出中断请求,CPU检测到中断请求后,由硬件将TF0置位。CPU响应中断时,由硬件自动将TF0复位为0。(6)TF1:定时器/计数器T1溢出中断请求标志位。其控制功能与TF0类似。(7)TR0、TR1:定时器/计数器的启/停控制位(将在第6章中介绍)。INT1单片机原理与应用262.串行口控制寄存器SCON串行口控制寄存器SCON各位的定义如图5-5所示图5-5串行口控制寄存器各位的定义(1)RI:串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行数据帧,串行口电路便将RI置位,向CPU发出串行口中断请求。(2)TI:串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行数据帧,串行口电路便将TI置位,向CPU发出串行口中断请求。单片机原理与应用27CPU响应串行口中断后,中断系统不会通过硬件电路自动将RI或TI复位,而必须在串行口中断服务程序中通过软件对它们进行清除。这是因为MCS-51单片机的串行口中断是由RI和TI所共用的,因此,进入串行口中断服务程序后,常需要对它们进行检测,以确定发生的串行口中断到底是接收中断还是发送中断。为了防止CPU再次响应这类中断,应在中断服务程序的适当位置通过如下位操作指令将它们撤除。CLRRI;撤除接收中断标志CLRTI;撤除发送中断标志说明:单片机原理与应用28若采用字节操作指令,则指令如下:ANLSCON,#0FCH;撤除发送和接收中断标志,其余控制位不变(3)SCON其余各位将在第9章中介绍。单片机复位后,TCON和SCON各位均被清0。另外,所有的中断请求标志位均可由软件置1或清0,获得的效果与硬件置1或清0相同。单片机原理与应用295.2MCS-51的中断控制5.2.1中断允许控制5.2.2中断优先级控制5.2.3中断嵌套单片机原理与应用305.2.1中断允许控制MCS-51单片机的中断系统通过中断允许控制寄存器IE对所有中断以及某个中断源进行中断允许控制。IE中设置有中断允许总控位和各个中断源的分控位,这些位的状态可以通过程序由软件设定,只有当总控位和分控位都为1时,相应的中断源才被允许(参见图5-2)。单片机开机/复位时,IE各位被复位为0,处于关闭所有中断的状态。所以需要用到某个中断源时,必须通过指令使IE开放所需中断,才能使相应的中断请求发生时能为CPU所响应。单片机原理与应用31图5-6中断允许控制寄存器IE各位的定义(1)EA:中断允许总控位。EA=0时,关闭所有中断源的中断请求;EA=1时,开放所有中断源的中断允许总控,但它们的中断请求最终能否为CPU响应还要取决于IE中相应中断源的中断允许分控位的状态。中断允许控制寄存器IE各位的定义:单片机原理与应用32(2)EX0:外部中断的中断允许位。EX0=0时,的中断请求被关闭;EX0=1时,的中断请求被允许,但CPU最终能否响应的中断请求还要取决于IE中的中断允许总控位EA的状态。(3)EX1:外部中断的中断允许位。控制功能与EX0相同。INT0INT1INT0INT0单片机原理与应用33(4)ET0:定时器/计数器T0中断允许位。ET0=0时,T0的中断请求被关闭;ET0=1,且EA=1时,T0的中断请求被允许。(5)ET1:定时器/计数器T1中断允许位。控制功能与ET0类同。(6)ES:串行口中断允许位。ES=0时,串行口的中断请求被关闭;ES=1,且EA=1时,串行口的中断请求被允许。单片机原理与应用345.2.2中断优先级控制MCS-51单片机有两个中断优先级,由中断优先级控制寄存器IP进行设置。IP中的控制位与各中断源一一对应。当IP中的某一控制位的状态设定为1时,与之相应的中断源为高优先级中断;设定为0时,相应的中断源为低优先级中断(参见图5-2)。单片机开机/复