《增强型8051单片机中断系统.ppt》由会员分享,可在线阅读,更多相关《增强型8051单片机中断系统.ppt(36页珍藏版)》请在三一办公上搜索。
1、增强型8051单片机中断系统,目 录,1中断系统概述2 STC11F08XE单片机的中断系统3 STC11F08XE单片机外部中断的扩展,1中断系统概述,1.1 中断系统的几个概念 1.2 中断的技术优势 1.3 中断系统需要解决的问题,1.1 中断系统的几个概念,1.中断所谓中断是指程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理外部或内部事件的中断服务程序中去;完成中断服务程序后,CPU返回继续原来被打断的程序。个完整的中断过程包括4个步骤:中断请求,中断响应、中断服务与中断返回。,1.1 中断系统的几个概念,2.中断源 引起CPU中断的根源,称为中断源。中断源向C
2、PU提出的处理请求,称为中断请求或中断申请。3.中断优先级 当有几个中断源同时申请中断时,那么就存在CPU响应哪个中断请求的问题?为此,CPU要对各中断源确定一个优先等级,称为中断优先级。中断优先级高的中断请求优先响应。4.中断嵌套 中断优先级高的中断请求可以中断CPU正在处理的优先级更低的中断服务程序,待完成了中断优先权高的中断服务程序之后,再继续被打断的更低的中断服务程序。这就是中断嵌套,如图6.1(b)所示。,1.2 中断的技术优势,解决了快速CPU和慢速外设之间的矛盾,可使CPU和外设并行工作 可及时处理控制系统中许多随机参数和信息 具备了处理故障的能力,提高了机器自身的可靠性 实现人
3、机联系,1.3 中断系统需要解决的问题,(1)当有中断请求时,需要有一个寄存器能把中断源的中断请求记录下来;(2)当有中断请求时,CPU能及时响应中断,停下正在执行的任务,转去处理中断服务子程序,中断服务处理后能返回到断点处继续处理原先的任务;(3)当有多个中断源同时申请中断时,应能优先响应优先级高的中断源,实现中断优先级的控制;(4)当CPU正在执行低优先级中断源中断服务程序时,若这时优先级比它高的中断源也提出中断请求,要求能暂停执行低优先级中断源的中断服务程序转去执行更高优先级中断源的中断服务程序,实现中断嵌套,并能逐级正确返回原断点处。,2 STC11F08XE单片机的中断系统,2.1
4、STC11F08XE单片机的中断源 2.2 STC11F08XE单片机的中断控制 2.3 STC11F08XE单片机的中断处理过程 2.4 STC11F08XE单片机中断应用举例(STC11F08XE单片机的中断系统),2 STC11F08XE单片机的中断系统,2.1 STC11F08XE单片机的中断源,1.中断源(1)外部中断0(2)外部中断1(3)定时/计数器T0溢出中断(4)定时/计数器T1溢出中断(5)串行口中断(6)片内电源低电压检测中断,2.1 STC11F08XE单片机的中断源,2.中断请求标志(1)TCON寄存器中的中断请求标志TCON为定时器T0和T1的控制寄存器,同时也锁存
5、T0和T1的溢出中断请求标志及外部中断0和1的中断请求标志。,2.1 STC11F08XE单片机的中断源,(2)SCON寄存器中的中断请求标志SCON是串行口控制寄存器,其低2位TI和RI锁存串行口的接收中断请求标志和发送中断请求标志。,2.1 STC11F08XE单片机的中断源,(3)PCON寄存器中中断请求标志PCON是电源控制寄存器,其中B5位为LVD中断源的中断请求标志。,2.2 STC11F08XE单片机的中断控制,1.中断允许控制计算机中断系统有两种不同类型的中断:一类称为非屏蔽中断,另一类称为可屏蔽中断。对非屏蔽中断,用户不能用软件的方法加以禁止,一旦有中断申请,CPU必须予以响
6、应。对可屏蔽中断,用户则可以通过软件方法来控制是否允许某中断源的中断,允许中断称中断开放,不允许中断称中断屏蔽。STC11F08XE单片机的6个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE用于控制CPU对各中断源的开放或屏蔽。,2.2 STC11F08XE单片机的中断控制,2.中断优先控制STC11F08XE单片机有两个中断优先级,每个中断源都可以通过编程确定为高优先级中断或低优先级中断。IP为中断优先级寄存器,锁存各中断源优先级控制位,IP中的每一位均可由软件来置1或清0,且1表示高优先级,0表示低优先级。,2.3 STC11F08XE单片机的中断处理过程,1中断响应 中断响应
7、是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。(1)中断响应条件CPU响应中断的条件有:1)有中断源发出中断请求。2)中断总允许位EA=1。3)申请中断的中断源处于中断允许状态。满足以上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断,会不同程度地增加CPU响应中断的时间。1)CPU正在执行同级或高优先级的中断。2)当前指令未执行完。3)正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。,2.3 STC11F08XE单片机的中断处
8、理过程,(2)中断响应过程 中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。CPU响应中断时,将相应的优先级状态触发器置1,然后由硬件自动产生一个长调用指令LCALL,此指令首先把断点地址压入堆栈保护,再将中断服务程序的入口地址送入到程序计数器PC,使程序转向相应的中断服务程序。,2.3 STC11F08XE单片机的中断处理过程,2中断处理中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止,一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。编写中断服务程序时还需注意以下几点:(1)各中断源的中断入口地址之间只相隔8个字节,容纳不下
9、普通的中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,转向执行存在其它位置的中断服务程序。(2)若要在执行当前中断程序时禁止其它更高优先级中断,需先用软件关闭CPU中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。(3)在保护和恢复现场时,为了不使现场数据遭到破坏或造成混乱,一般规定此时CPU不再响应新的中断请求。因此,在编写中断服务程序时,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断。同样,在恢复现场前也应先关中断,恢复之后再开中断。,2.3 STC11F08XE单片机的中断处理过程,3中断返回 中断返回是指中断服务完成后,计算机返回原来
10、断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。特别要注意不能用“RET”指令代替“RETI”指令。,2.3 STC11F08XE单片机的中断处理过程,4中断请求的撤除 CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则,会重复引起中断而导致错误。STC11F08XE单片机各中断源中断请求撤除的方法各不相同,分别为:(1)定时器中断请求的撤除 对于定时器T0或T1溢出中断,CPU在响应中断后即由硬件自动清除其中断标
11、志位TF0或TF1,无需采取其它措施。(2)串行口中断请求的撤除 对于串行口中断,CPU在响应中断后,硬件不会自动清除中断请求标志位TI或RI,必须在中断服务程序中,在判别出是TI,还是RI引起的中断后,再用软件将其清除。(3)外部中断请求的撤除 外部中断可分为边沿触发型和电平触发型。对于边沿触发的外部中断0或1,CPU在响应中断后由硬件自动清除其中断标志位IE0或IE1,无需采取其它措施。,2.3 STC11F08XE单片机的中断处理过程,4中断请求的撤除 对于电平触发的外部中断,其中断请求撤除方法较复杂。因为对于电平触发外部中断,CPU在响应中断后,硬件也会自动清除其中断请求标志位,但中断
12、请求信号的低电平可能继续存在,在后续的采样中又会把已清0的IE0或IE1标志重新置1,再次发出中断请求。因此,在CPU响应中断后、执行返回指令前,应撤除中断请求引脚上的低电平。否则,就会引起重复中断而导致错误。而CPU又不能控制中断请求引脚的信号,为此,只有通过硬件再配合相应软件才能解决这个问题。,2.3 STC11F08XE单片机的中断处理过程,5中断响应时间 中断响应时间是指从中断请求标志位置位到CPU开始执行中断服务程序的第一条指令所持续的时间。影响中断响应时间的因素有多种,影响程度也不同,具体见中断响应中的有关响应条件的说明。若不是对时间有特别要求,编程时,一般不考虑中断响应时间对程序
13、运行的影响。,2.4 STC11F08XE单片机中断应用举例,例6.1 利用引脚输入单次脉冲,每来一个负脉冲,将连接到P1口的的发光二极管循环点亮(设低电平驱动)。汇编语言参考程序如下:ORG 0000H LJMP MAIN ORG 0003H LJMP INT0_ISR ORG 0l00HMAIN:MOV A,0FEH;设置LED灯起始驱动信号 SETB IT0;设置外部中断0为边沿触发方式 SETB EX0;开放外部中断0 SETB EA;开放总中断 SJMP$;原地踏步,起模拟主程序的作用,2.4 STC11F08XE单片机中断应用举例,;外部中断0中断服程序INT0_ISR:MOV P
14、1,A;输出LED灯驱动信号 RL A;左移,为循环点亮LED灯做准备 RETI;中断返回 END,2.4 STC11F08XE单片机中断应用举例,例6.1 利用引脚输入单次脉冲,每来一个负脉冲,将连接到P1口的的发光二极管循环点亮(设低电平驱动)。C51参考程序如下:#include/包含8052单片机的寄存器定义文件unsigned char i=0 xfe;/*-外部中断0中断函数-*/void x0_isr()interrupt 0 Pl=i;i=1;if(i=0)i=0 xfe;/移位8次后,i将变为0,需要重新赋值,2.4 STC11F08XE单片机中断应用举例,/*-主函数-*/
15、void main(void)IT0=l;/设置边沿触发方式 EX0=1;/开放外部中断0 EA=1;while(1);/原地踏步,模拟主程序,3 STC11F08XE单片机外部中断的扩展,1.利用外部中断加查询的方法扩展外部中断 2.利用定时中断、串口中断扩展外部中断,1.利用外部中断加查询的方法扩展外部中断,利用两根外部中断输入线(和脚),每一中断输入线可以通过逻辑与或逻辑或非的关系连接多个外部中断源,同时,利用并行输入端口线作为多个中断源的识别线,1.利用外部中断加查询的方法扩展外部中断,例6.2 如图6.5所示为一3机器故障检测与指示系统,当无故障时,LED3灯亮;当有故障时,LED3
16、灯灭,0号故障时,LED0灯亮,1号故障时,LED1灯亮,2号故障时,LED2灯亮。,1.利用外部中断加查询的方法扩展外部中断,汇编语言参考程序如下:ORG 0000HLJMP MAIN ORG 00003H LJMP INT0_ISR ORG 0100H MAIN:MOV SP,#60H;设定堆栈区域 CLR IT0;设定外部中断0为电平触发方式,随时跟踪故障 SETB EX0;开放外部中断0 SETB EA;开放总中断,1.利用外部中断加查询的方法扩展外部中断,Trouble:SETB P1.7;熄灭LED3 SJMP LOOP;循环检查与判断INT0_ISR:JNB P1.0,No_Tr
17、ouble_0;查询0号故障源,无故障转K10,熄灭LED0 CLR P1.1;有故障,点亮LED0 SJMP Check_Trouble_1No_Trouble_0:SETB P1.1,1.利用外部中断加查询的方法扩展外部中断,Check_Trouble_1:JNB P1.2,No_Trouble_1;查询1号故障源,无故障转K12,熄灭LED1 CLR P1.3;有故障,点亮LED1 SJMP Check_Trouble_2No_Trouble_1:SETB P1.3Check_Trouble_2:JNB P1.4,No_Trouble_2;查询2号故障源,无故障转K14,熄灭LED2 C
18、LR P1.5;有故障,点亮LED1 SJMP K15No_Trouble_2:SETB P1.5Exit_INT0_ISR:RETI;查询结束,中断返回 END,1.利用外部中断加查询的方法扩展外部中断,例6.2 如图6.5所示为一3机器故障检测与指示系统,当无故障时,LED3灯亮;当有故障时,LED3灯灭,0号故障时,LED0灯亮,1号故障时,LED1灯亮,2号故障时,LED2灯亮。C51参考程序如下:include sbit P10Pl0;sbit P11Pl1;sbit Pl2Pl2;sbit Pl3Pl3;sbit P14Pl4;sbit P1 5Pl5;sbit Pl6Pl6;sb
19、it Pl7Pl7;,1.利用外部中断加查询的方法扩展外部中断,*-外部中断0中断函数-*void x0_isr(void)interrupt 0 P11P10;/故障指示灯状态与故障信号状态相反 P13P12;P15P14;,1.利用外部中断加查询的方法扩展外部中断,*-主函数-*void main(void)unsigned char i;IT00;/外部中断0为电平触发方式 EX01;/允许外部中断0 EA 1;/总中断允许 while(1)i Pl;if(!(i0 x15)/若没有故障,点亮工作指示灯LED3 Pl70;else Pl71;/若有故障,熄灭工作指示灯LED3,2.利用定时中断、串口中断扩展外部中断,通过对WAKE_CLKO寄存器操作,RXD(P3.0或P1.6)、T0与T1引脚设置下降沿触发串行接收中断标志RI、T0定时中断标志TF0和T1定时中断标志TF1,相当于利用2个定时中断和串行口中断扩展了3个外部边沿触发的外部中断,同时RXD(P3.0或P1.6)、T0(P3.4)与T1(P3.5)引脚的下降沿触发信号可以唤醒空闲模式和停机模式的CPU,恢复单片机的正常工作。这种扩展方法是牺牲其它中断来获得的,只有在其它中断不用时,这种扩展才有意义。这种外部中断扩展的意义,更多地应该是其唤醒功能。,