《第五章中断系统课件.ppt》由会员分享,可在线阅读,更多相关《第五章中断系统课件.ppt(20页珍藏版)》请在三一办公上搜索。
1、5.2.3 中断请求的响应、撤除及返回 1中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。,5.2.3 中断请求的响应、撤除及返回,(1)当前CPU没有响应其他任何中断请求,则AT89C51在执行完现行指令后就会自动响应该中断。(2)CPU正在响应某中断请求时,如果新来的中断请求优先级更高,则AT89C51会立即响应新中断请求,从而实现中断嵌套;如果新来的中断请求
2、与正在响应的中断优先级相同或更低,则CPU必须等到现有中断服务完成以后,才会自动响应新来的中断请求。(3)在CPU执行RETI指令或访问IE/IP寄存器指令时,CPU必须等到这些指令执行完之后才能响应中断请求。,(1)当前CPU没有响应其他任何中断请求,,AT89C51响应某一中断请求后要进行如下操作:(1)完成当前指令的操作。(2)保护断点地址,将PC内容压入堆栈。(3)屏蔽同级的中断请求。(4)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。中断源口地址如表5-2所示。(5)执行中断服务程序。(6)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存
3、器,返回到先前断点处继续执行原程序。表5-2给出的中断源入口地址是固定的,不能更改。,AT89C51响应某一中断请求后要进行如下操,表5-2 AT89C51中断入口地址表,表5-2 AT89C51中断入口地址表中断源中断程序入口地,2中断响应的时间 中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。3中断请求的撤除 中断源发出中断请求后,CPU首先使相应的中断标志位置位,然后通过对中断标志位的检测决定是否响应。而CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。,2中断响应的时
4、间,AT89C51的中断标志位的清除(复位)有两种方法,即硬件复位和软件复位。串行口中断请求,CPU响应后,没有用硬件直接清除其中断标志TI(SCON.1,发送中断标志)、RI(SCON.0,接收中断标志)的功能,必须靠软件复位清除。因此在响应串行口中断请求后,必须在中断服务程序中的相应位置通过指令将其清除(复位)。例如可使用以下指令:CLR TI CLR RI 或 ANL SCON,#0FCH,AT89C51的中断标志位的清除(复位),ANL P1,#0FEH ORL P1,#01H CLR IE0 上述指令中第二条、第三条是十分必要的,第二条指令不但使上的低电位变成高电位,撤除了中断,而且
5、使D触发器可以再次接受中断请求正脉冲信号。第三条指令用于清除可能已被重复置位的中断标志位IE0,使本次中断请求被彻底撤除。,ANL P1,#0FEH,图5-6 清除外部中断请求电路,图5-6 清除外部中断请求电路,4中断返回 AT89C51响应中断后,自动执行中断服务程序。在中断服务程序中,只要遇到RETI指令(不论在什么位置),单片机就结束本次中断服务,返回原程序。因此,在中断服务程序的最后必须有一条RETI指令,用于中断返回。,4中断返回,5.3 中断系统的应用,AT89C51中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服务程序的编写
6、。下面通过几个应用举例加以理解。例5.1 利用外中断实现程序的单步执行。AT89C51内部有4 KB字节的Flash存储器,用户编写好的程序用简单的程序写入器很容易写入和擦除,在没有开发系统的条件下,利用外中断实现程序的单步运行为用户调试程序带来一定的方便。,5.3 中断系统的应用 AT89C,图5-7 单步执行程序硬件电路图,图5-7 单步执行程序硬件电路图,例5.2 利用定时器作外部中断源。AT89C51内部有两个定时器/计数器,当它们选择为计数器工作方式时,T0(P3.4)或T1(P3.5)引脚上发生的负跳变将使T0或T1计数器加1计数。利用此特性,将P3.4、P3.5作为外部中断请求输
7、入线,将T0或T1计数初值设定为满量程(#0FFH)。当T0、T1引脚上的电平发生负跳变时,计数器加1计数溢出,引起中断,因而可当作外中断使用,以计数器T0为例,初始化程序如下:,例5.2 利用定时器作外部中断源。,MOV TMOD,#06H;置T0为工作方式2MOV TL0,#0FFH;置T0计数初值MOV TH0,#0FFHSETB EA;开CPU中断SETB ET0;允许T0中断SETB TR0;启动T0计数 END,MOV TMOD,#06H;置T0为工作方式2,例5.3 扩展外部中断源:在变频调速器中都设有过流(OC)、过压(OV)、欠压(UV)、过热(OH)这四种故障保护,当任一故
8、障发生时,都要立刻停机处理,避免故障范围扩大。这种情况必须采用中断方式,使单片机立刻响应中断处理。试设计其硬件电路和软件程序。,例5.3 扩展外部中断源:在变频调,根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如图5-8所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。,根据要求,四个故障相当四个中断源,可利用中,图5-8 扩展4个外中断源电路,图5-8 扩展4个外中断源电路,主程序和中断服务程序如下:
9、ORG0000AJMPZCX1;转主程序NOP ORG 0013HAJMP INT1;转中断程序NOP ORG 0100H,主程序和中断服务程序如下:,ZCX1:MOV SP,#30H;置堆栈指针 MOV IP,#04H;设 为最高级 CLR IT1;设 为电平触发 SETB EA;开中断 SETB EX1ZCX2:其他处理程序 AJMP ZCX2 ORG 0200H,ZCX1:MOV SP,#30H;置堆栈指针,INT1:PUSH PSW;保护现场 PUSH ACC MOV A,P1;读入P1口低4位状态 ANL A,#0FH JNB ACC0,X1;是OC中断吗?不是则转移 ACALL XY1;调OC处理子程序X1:JNB ACC1,X2;是OV中断吗?不是则转移 ACALL XY2;调OV处理子程序X2JNB:ACC2,X3;是UV中断吗?不是则转移 ACALL XY3;调UV处理子程序,INT1:PUSH PSW;保,X3:JNB ACC3,X4;是OH中断吗?不是则转移 ACALL XY4;调OH处理子程序X4:POP ACC POP PSW RETIXY1:OC处理子程序(略)RET,X3:JNB ACC3,X4;是OH中,