您好,欢迎访问三七文档
第5章中断系统5.2.3中断请求的响应、撤除及返回1.中断的响应从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。第5章中断系统(1)当前CPU没有响应其他任何中断请求,则AT89C51在执行完现行指令后就会自动响应该中断。(2) CPU正在响应某中断请求时,如果新来的中断请求优先级更高,则AT89C51会立即响应新中断请求,从而实现中断嵌套;如果新来的中断请求与正在响应的中断优先级相同或更低,则CPU必须等到现有中断服务完成以后,才会自动响应新来的中断请求。(3) 在CPU执行RETI指令或访问IE/IP寄存器指令时,CPU必须等到这些指令执行完之后才能响应中断请求。第5章中断系统AT89C51响应某一中断请求后要进行如下操作:(1)完成当前指令的操作。(2)保护断点地址,将PC内容压入堆栈。(3)屏蔽同级的中断请求。(4)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。中断源口地址如表5-2所示。(5)执行中断服务程序。(6)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。表5-2给出的中断源入口地址是固定的,不能更改。第5章中断系统表5-2AT89C51中断入口地址表中断源中断程序入口地址INT00003H定时器T0000BHINT10013H定时器T1001BH串行口中断0023H第5章中断系统2.中断响应的时间中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。3.中断请求的撤除中断源发出中断请求后,CPU首先使相应的中断标志位置位,然后通过对中断标志位的检测决定是否响应。而CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。第5章中断系统AT89C51的中断标志位的清除(复位)有两种方法,即硬件复位和软件复位。串行口中断请求,CPU响应后,没有用硬件直接清除其中断标志TI(SCON.1,发送中断标志)、RI(SCON.0,接收中断标志)的功能,必须靠软件复位清除。因此在响应串行口中断请求后,必须在中断服务程序中的相应位置通过指令将其清除(复位)。例如可使用以下指令:CLRTICLRRI或ANLSCON,#0FCH第5章中断系统ANLP1,#0FEHORLP1,#01HCLRIE0上述指令中第二条、第三条是十分必要的,第二条指令不但使上的低电位变成高电位,撤除了中断,而且使D触发器可以再次接受中断请求正脉冲信号。第三条指令用于清除可能已被重复置位的中断标志位IE0,使本次中断请求被彻底撤除。第5章中断系统89C51INT0P1.0DCPSDQ图5-6清除外部中断请求电路第5章中断系统4.中断返回AT89C51响应中断后,自动执行中断服务程序。在中断服务程序中,只要遇到RETI指令(不论在什么位置),单片机就结束本次中断服务,返回原程序。因此,在中断服务程序的最后必须有一条RETI指令,用于中断返回。第5章中断系统5.3中断系统的应用AT89C51中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服务程序的编写。下面通过几个应用举例加以理解。[例5.1]利用外中断实现程序的单步执行。AT89C51内部有4KB字节的Flash存储器,用户编写好的程序用简单的程序写入器很容易写入和擦除,在没有开发系统的条件下,利用外中断实现程序的单步运行为用户调试程序带来一定的方便。第5章中断系统89C51单稳态电路+5V0INT图5-7单步执行程序硬件电路图第5章中断系统[例5.2]利用定时器作外部中断源。AT89C51内部有两个定时器/计数器,当它们选择为计数器工作方式时,T0(P3.4)或T1(P3.5)引脚上发生的负跳变将使T0或T1计数器加1计数。利用此特性,将P3.4、P3.5作为外部中断请求输入线,将T0或T1计数初值设定为满量程(#0FFH)。当T0、T1引脚上的电平发生负跳变时,计数器加1计数溢出,引起中断,因而可当作外中断使用,以计数器T0为例,初始化程序如下:第5章中断系统MOVTMOD,#06H;置T0为工作方式2MOVTL0,#0FFH;置T0计数初值MOVTH0,#0FFHSETBEA;开CPU中断SETBET0;允许T0中断SETBTR0;启动T0计数END第5章中断系统[例5.3]扩展外部中断源:在变频调速器中都设有过流(OC)、过压(OV)、欠压(UV)、过热(OH)这四种故障保护,当任一故障发生时,都要立刻停机处理,避免故障范围扩大。这种情况必须采用中断方式,使单片机立刻响应中断处理。试设计其硬件电路和软件程序。第5章中断系统根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如图5-8所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。第5章中断系统P1.3P1.2P1.1P1.0AT89C51≥1OCOVUVOH1INT图5-8扩展4个外中断源电路第5章中断系统主程序和中断服务程序如下:ORG0000AJMPZCX1;转主程序NOPORG0013HAJMPINT1;转中断程序NOPORG0100H第5章中断系统ZCX1:MOVSP,#30H;置堆栈指针MOVIP,#04H;设为最高级CLRIT1;设为电平触发SETBEA;开中断SETBEX1ZCX2:其他处理程序AJMPZCX2ORG0200H1INT1INT第5章中断系统INT1:PUSHPSW;保护现场PUSHACCMOVA,P1;读入P1口低4位状态ANLA,#0FHJNBACC0,X1;是OC中断吗?不是则转移ACALLXY1;调OC处理子程序X1:JNBACC1,X2;是OV中断吗?不是则转移ACALLXY2;调OV处理子程序X2JNB:ACC2,X3;是UV中断吗?不是则转移ACALLXY3;调UV处理子程序第5章中断系统X3:JNBACC3,X4;是OH中断吗?不是则转移ACALLXY4;调OH处理子程序X4:POPACCPOPPSWRETIXY1:OC处理子程序(略)RET
本文标题:第五章 中断系统
链接地址:https://www.777doc.com/doc-3802616 .html