资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第5章,MCS-51,的中断系统,实时测控,单片,机,能及时地响应和处理单片机外,部事件或内部事件所提出的中断请求,。,5.1 中断的概念,CPU,正在执行程序时,单片机外部或内部发生的某一,事件,,请求,CPU,迅速去处理。,CPU,暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。,处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为,中断,。,CPU,处理事件的过程,称为,CPU,的,中断响应过程。,图5-1所示。对事件的整个处理过程,称为,中断处,理,(,或中断服务,),。,能够实现中断处理功能的部件称为,中断系统,;产生中断的请求源称为,中断请求源,。,中断源向,CPU,提出的处理请求,称为,中断请求,(或,中断申请,)。,进入中断,保护现场,中断处理恢复现场,中断返回,中断方式,优点,:,大大地提高了,CPU,的工作效率,。,5.2,MCS-51,中断系统的结构,有5个中断请求源,两个中断优先级,可两级嵌套。,中断系统结构示意图,如下图所示。,5.3 中断请求源,五个中断请求源:,(1),INT0,*,外部中断请求0,由引脚,INT0,*,输入,中断请求标志为,IE0,。,(,2),INT1,*,外部中断请求1,由引脚,INT1,*,输入,中断请求标志为,IE1。,(3),定时器/计数器,T0,溢出,中断请求,中断请求标志为,TF0,。,(4),定时器/计数器,T1,溢出,中断请求,中断请求标志为,TF1,。,(5),串行口中断请求,,中断请求标志为,TI,或,RI,。,由特殊功能寄存器,TCON,和,SCON,的相应位锁存。,TCON,为定时器/计数器的控制寄存器,,字节地址为88,H。,包含:,(1),T0,和,T1,的溢出中断请求标志位,TF1,和,TF0,(2),外部中断请求标志位,IE1,与,IE0。,格式如下所示:,各标志位的功能:,(1),IT0,选择外部中断请求0为跳沿触发方式还是电平触发方式:,IT0=0,,,为,电平触发,方式。,IT0=1,,,为,跳沿触发,方式。,可由软件置“1”或清“0”。,(2),IE0,外部中断请求0的中断请求标志位。,IE0=0,,,无中断请求,。,IE0=1,,,外部中断0有中断请求。当,CPU,响应该中断,转向中断服务程序时,由硬件清“0”,IE0。,(3)IT1,外部中断请求1为跳沿触发方式还是电平触发方式,意义与,IT0,类似。,(4),IE1,外部中断请求1的中断请求标志位,意义与,IE0,类似。,(5),TF0,T0,溢出中断请求标志位。,T0,计数后,溢出时,由硬件置“1”,TF0,,向,CPU,申请中断,,CPU,响应,TF0,中断时,,硬件自动清“0”,TF0,,TF0,也可由软件清0。,(6),TF1,T1,的溢出中断请求标志位,功能和,TF0,类似。,TR1,、,TR0,2个位与中断无关。,当,MCS-51,复位后,,,TCON,被清0,则,CPU,关中断,,所有中断请求被禁止。,SCON,为串行口控制寄存器,字节地址为98,H,。串行口的,发送中断,和,接收中断,的中断请求标志,TI,和,RI,,,格式如下:,各标志位的功能:,(1),TI,发送中断请求标志位。串口每发送完一帧串行数据后,硬件自动置“1”,TI。,必须在中断服务程序中用软件对,TI,标志清“0”。,(2),RI,接收中断请求标志位。串口接收完一个数据帧,硬件自动置“1”,RI,标志。,必须在中断服务程序中用,软件,对,RI,标志清“0”。,5.4 中断控制,5.4.1 中断允许寄存器,IE,CPU,对中断源的开放或屏蔽,由片内的,中断允许寄存器,IE,控制。,字节地址为,A8H,,,可位寻址。格式如下:,IE,对中断的开放和关闭为两级控制,总的开关中断控制位,EA,位):,EA=0,,所有中断请求被屏蔽。,EA=1,,,CPU,开放中断,但五个中断源的中断请求是否允许,还要由,IE,中的5个中断请求允许控制位决定。,IE,中各位的功能如下:,(1),EA,:,中断允许总控制位,0:,CPU,屏蔽所有的中断请求(,CPU,关中断);,1:,CPU,开放所有中断(,CPU,开中断)。,(2),ES,:,串行口中断允许位,0:,禁止串行口中断;,1:,允许串行口中断。,MCS-51,复位后,,IE,清0,所有中断请求被禁止。,若使某一个中断源被允许中断,除了,IE,相应的位的被置“1”,还必须使,EA,位=1。,改变,IE,的内容,可由位操作指令来实现,即:,SETB bit;,CLR bit。,例5-1,若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。编写设置,IE,的相应程序段,(1)用位操作指令来编写如下程序段,:,CLR ES,;禁止串行口中断,CLR EX1 ;,禁止外部中断1中断,CLR EX0;,禁止外部中断0中断,SETB ET0 ;,允许定时器/计数器,T0,中断,SETB ET1 ;,允许定时器/计数器,T1,中断,SETB EA ;CPU,开中断,(2)用字节操作指令来编写,:,MOV IE,#8AH,或者用:,MOV 0A8H,#8AH,;A8H,为,IE,寄存器字节地址,5.4.2 中断优先级寄存器,IP,两个中断优先级,可实现两级中断嵌套。,如图,5-6,示。,可归纳为下面两条基本规则:,(1)低优先级可被高优先级中断,反之则不能。,(2)同级中断不会被它的同级中断源所中断。,若,CPU,正在执行高优先级的中断,则不能被任何中断源所中断,。,中断优先级寄存器,IP,,,其字节地址为,B8H,。,IP,各个位的含义:,(1),PS,串行口中断优先级控制位,1,:,高优先级中断;,0,:,低优先级中断。,(2),PT1,定时器,T1,中断优先级控制位,1,:,高优先级中断;,0,:,低优先级中断。,(3),PX1,外部中断1中断优先级控制位,1,:,高优先级中断;,0,:,低优先级中断。,(4),PT0,定时器,T0,中断优先级控制位,1,:,高优先级中断;,0,:,低优先级中断。,(5),PX0,外部中断0中断优先级控制位,1,:,高优先级中断;,0,:,低优先级中断。,由软件可改变各中断源的中断优先级。,MCS-51,的中断系统,有,两个,不可寻址的“优先级激活触发器”,:,一个,用来指示某高优先级的中断正在执行,所有后来的中断均被阻止。,另一个,用来指示某低优先级的中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。,在同时收到,几个同一优先级的中断请求,时,,优先响应哪一个中断,取决于,内部的查询顺序,。,查询顺序,如下:,中断源 中断级别,外部中断0最高,T0,溢出中断,外部中断1,T1,溢出中断,串行口中断最低,例5-2,设置,IP,寄存器的初始值,使2个外中断请求为高优先级,其它中断请求为低优先级。,(1)用位操作指令,SETB PX0,;2,个外中断为高优先级,SETB PX1,CLR PS,;,串口为低优先级中断,CLR PT0,;,2,个定时器/计数器低优先级中断,CLR PT1,(2),用字节操作指令,MOV IP,#05H,或:,MOV 0B8H,#05H;B8H,为,IP,寄存器的字节地址,5.5 响应中断请求的条件,一个中断请求被响应,需满足以下必要条件:,(1),IE,寄存器中的中断总允许位,EA=1。,(2),该中断源发出中断请求,即该中断源对应的中 断请求标志为“1”。,(3)该中断源的中断允许位=1,即该中断没有被屏,蔽。,(4)无同级或更高级中断正在被服务。,中断响应的主要过程:,首先由硬件自动生成一条长调用指令:,LCALL addr16,接着就由,CPU,执行该指令,将,PC,的内容压入堆栈以保护断点,再将中断入口地址装入,PC,。各中断源服务程序的入口地址是固定的,如下所示:,中断源 入口地址,外部中断0 0003,H,定时器/计数器,T0 000BH,外部中断1 0013,H,定时器/计数器,T1001BH,串行口中断0023,H,中断响应是有条件的,遇到,下列三种情况,之一时,中断响应被封锁:,(1),CPU,正在处理同级的或更高优先级的中断,。,(2),所查询的机器周期,不是所当前正在执行指令的最后一个机器周期,。只有在当前指令执行完毕后,才能进行中断响应。,2个定时器/计数器低优先级中断,二、采用中断时的主程序结构,JB P1.,IT0=0,为电平触发方式。,CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。,SETB PX0;,SETB IT0 ;,(1)中断请求标志位查询占1个机器周期。,IR4:IR4的中断处理程序,各中断源服务程序的入口地址是固定的,如下所示:,(1)EA:中断允许总控制位,0:CPU屏蔽所有的中断请求(CPU关中断);,(1)EA:中断允许总控制位,CLR PT1,IR1:IR1的中断处理程序,(3),正在执行的指令是,RETI,或是访问,IE,或,IP,的指令。,需要再去执行完一条指令,才能响应新的中断请求。,如果存在上述三种情况之一,,CPU,将丢弃中断查询结果,不能对中断进行响应。,5.6 外部中断的响应时间,外部中断的,最短,的响应时间为3个机器周期:,(1)中断请求标志位查询占,1个机器周期,。,(2)子程序调用指令,LCALL,转到相应的中断服务程序入口,需,2个机器周期,。,外部中断响应的,最长,的响应时间为8个机器周期,:,(1)发生在,CPU,进行中断标志查询时,刚好是开始,执行,RETI,或是访问,IE,或,IP,的指令,,则,需把当前指令执行完,再继续执行一条指令后,才能响应中断,,最长需2个机器周期,。,(,2,)接着再执行一条指令,按最长指令(乘法指令,MUL,和除法指令,DIV),来算,也只有,4个机器周期,。,(,3,)加上,硬件子程序调用,指令,LCALL,的执行,需要,2个机器周期,。,所以,,外部中断响应最长时间为,8个机器周期,。,如果已在处理同级或更高级中断,,响应时间无法计算。,在一个单一中断的系统里,,MCS-51,单片机,对外部中断请求的响应的时间总是在,38个机器周期,之间。,5.7 外部中断的触发方式选择,两种触发方式,:,电平触发,方式和,跳沿触发,方式。,5.7.1 电平触发方式,CPU,在每个机器周期采样到的外部中断输入线的电平。,在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),,否则,CPU,返回主程序后会再次响应中断。,适于外中断以低电平输入且中断服务程序能清除外部中断请求(即外部中断输入电平又变为高电平)的情况。,5.7.2 跳沿触发方式,连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置“1”中断请求标志,直到,CPU,响应此中断时,该标志才清0。这样不会丢失中断,但,输入的负脉冲宽度至少保持1个机器周期,。,5.8 中断请求的撤消,1,定时器/计数器中断请求,的撤消,中断请求被响应后。硬件会,自动清,TF0,或,TF1,。,2,外部中断请求,的撤消,(1),跳沿,方式外部中断请求的撤消是,自动撤消,的。,(2),电平,方式外部中断请求的撤消,:,除了标志位清“0”之外,还需在中断响应后把中断请求,信号引脚从低电平强制改变为高电平,如图,5-8,所示。,只要端输出一个负脉冲就可以使,D,触发器置“1”,从而撤消了低电平的中断请求信号。,所需的负脉冲可增加如下两条指令得到:,为“1”,为“0”,电平方式的外部中断请求信号的完全撤消,是通过软硬件相结合的方法来实现的。,3串行口中断请求的撤消,响应串行口的中断后,,CPU,无法知道是接收中断还是发送中断,,还需测试这两个中断标志位的状态,,以判定是接收操作还是发送操作,然后才能清除。所以,串行口中断请求的撤消,只能用软件清除,CLR TI ;,清,TI,标志位,CLR RI ;,清,RI,标志位,5.9 中断服务程序的设计,一、中断服务程序设计的任务,基本任务:,(1)设置中断允许控制寄存器,IE。,(2)设置中断优先级寄存器,IP。,(3)对外中断源,是采用电平触发还是跳沿触发。,(4)编写中断服务程序,处理中断请求,。,前,2,条一般放在主程序的初始化程序段中。,例5-3,假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。,在主程序中编写如下程序段:,SETB EA ;CPU,开中断,SETB ET0;,允许外中断0产生中断,SETB PX0;,外中断0为高级中断,SETB IT0 ;,外中断0为跳沿触发方式,二、采用中断时的主程序结构,常用的,主程序结构,如下:,ORG 0000H,LJMP MAIN,ORG,中断入口地址,LJMP INT,ORG XXXXH,MAIN:,主 程 序,INT:,中断服务程序,三、中断服务程序的流程,SETB EA;CPU,开中断,RETI;,中断返回,恢复断点,几点说明:,(1)现场保护仅涉及到,PSW,和,A,的内容,,如还有其它需保护的内容,,只需要在相应的位置再加几条,PUSH,和,POP,指令即可。,(2)“中断处理程序段”,应根据任务的具体要求,来编写。,(3)如果本中断服务程序,不允许被其它的中断所中断,。可将“中断处理程序段”前后的“,SETB EA”,和“,CLR EA”,两条指令去掉。,(4)中断服务程序的,最后一条指令,必须是返回指令,RETI。,MOV TH0,#0FFH,SETB TR0;,启动,T0,,开始计数,SETB ET0;,允许,T0,中断,SETB EA;CPU,开中断,当连接在,P3.4(T0,引脚)的电平发生负跳变时,,TL0,加1,产生溢出,置“1”,TF0,,向,CPU,发出中断请求,同时,TH0,的内容0,FFH,送,TL0,,即,TL0,恢复初值0,FFH。,5.10.2 中断和查询结合的方法,最高级别中断请求源,IR0,接,INT0,*,输入端,其余的外部中断请求源,IR1IR4,用“线或”的办法连到,MCS-51,的另一个外中断源输入端,同时还连到,P1,口。,5个外部中断源的排队顺序依此为:,IR0,IR4。,ORG 0013H,;INT1,的中断入口,LJMP INT1 ;,INT1:PUSH PSW,;,保护现场,PUSH A,CC,JB P1.0,IR1 ;,高,,IR1,有请求,JB P1.1,IR2 ;,高,,IR2,有请求,JB P1.2,IR3 ;,高,,IR3,有请求,JB P1.3,IR4 ;,高,,IR4,有请求,INTIR:POP A,CC,;,恢复现场,POP PSW,RETI ;,中断返回,IR1:,IR1,的中断处理程序,AJMP INTIR ;,IR2:,IR2,的中断处理程序,AJMP INTIR ;,IR3:,IR3,的中断处理程序,AJMP INTIR ;,IR4:,IR4,的中断处理程序,AJMP INTIR ;,
展开阅读全文