Presentation is loading. Please wait.

Presentation is loading. Please wait.

5.2.3 中断请求的响应、撤除及返回 1.中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。 在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。

Similar presentations


Presentation on theme: "5.2.3 中断请求的响应、撤除及返回 1.中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。 在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。"— Presentation transcript:

1 中断请求的响应、撤除及返回 1.中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。 在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。

2 (1) 当前CPU没有响应其他任何中断请求,则AT89C51在执行完现行指令后就会自动响应该中断。
(2)  CPU正在响应某中断请求时,如果新来的中断请求优先级更高,则AT89C51会立即响应新中断请求,从而实现中断嵌套;如果新来的中断请求与正在响应的中断优先级相同或更低,则CPU必须等到现有中断服务完成以后,才会自动响应新来的中断请求。 (3)  在CPU执行RETI指令或访问IE/IP寄存器指令时,CPU必须等到这些指令执行完之后才能响应中断请求。

3 AT89C51响应某一中断请求后要进行如下操作:
(1) 完成当前指令的操作。 (2) 保护断点地址,将PC内容压入堆栈。 (3) 屏蔽同级的中断请求。 (4) 将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。中断源口地址如表5-2所示。 (5) 执行中断服务程序。 (6) 当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。表5-2给出的中断源入口地址是固定的,不能更改。

4 表5-2 AT89C51中断入口地址表 中断源 中断程序入口地址 INT0 0003H 定时器T0 000BH INT1 0013H
串行口中断 0023H

5 2.中断响应的时间 中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。 3.中断请求的撤除 中断源发出中断请求后,CPU首先使相应的中断标志位置位,然后通过对中断标志位的检测决定是否响应。而CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。

6 AT89C51的中断标志位的清除(复位)有两种方法,即硬件复位和软件复位。串行口中断请求,CPU响应后,没有用硬件直接清除其中断标志TI(SCON.1,发送中断标志)、RI(SCON.0,接收中断标志)的功能,必须靠软件复位清除。因此在响应串行口中断请求后,必须在中断服务程序中的相应位置通过指令将其清除(复位)。例如可使用以下指令: CLR TI CLR RI 或 ANL SCON, #0FCH

7 ANL P1,#0FEH ORL P1,#01H CLR IE0 上述指令中第二条、第三条是十分必要的,第二条指令不但使上的低电位变成高电位,撤除了中断,而且使D触发器可以再次接受中断请求正脉冲信号。第三条指令用于清除可能已被重复置位的中断标志位IE0,使本次中断请求被彻底撤除。

8 图5-6 清除外部中断请求电路

9 4.中断返回 AT89C51响应中断后,自动执行中断服务程序。在中断服务程序中,只要遇到RETI指令(不论在什么位置),单片机就结束本次中断服务,返回原程序。因此,在中断服务程序的最后必须有一条RETI指令,用于中断返回。

10 5.3 中断系统的应用 AT89C51中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服务程序的编写。下面通过几个应用举例加以理解。 [例5.1] 利用外中断实现程序的单步执行。 AT89C51内部有4 KB字节的Flash存储器,用户编写好的程序用简单的程序写入器很容易写入和擦除,在没有开发系统的条件下,利用外中断实现程序的单步运行为用户调试程序带来一定的方便。

11 图5-7 单步执行程序硬件电路图

12 [例5.2] 利用定时器作外部中断源。 AT89C51内部有两个定时器/计数器,当它们选择为计数器工作方式时,T0(P3.4)或T1(P3.5)引脚上发生的负跳变将使T0或T1计数器加1计数。利用此特性,将P3.4、P3.5作为外部中断请求输入线,将T0或T1计数初值设定为满量程(#0FFH)。当T0、T1引脚上的电平发生负跳变时,计数器加1计数溢出,引起中断,因而可当作外中断使用,以计数器T0为例,初始化程序如下:

13 MOV TMOD,#06H ;置T0为工作方式2 MOV TL0 ,#0FFH ;置T0计数初值 MOV TH0 ,#0FFH SETB EA ;开CPU中断 SETB ET ;允许T0中断 SETB TR ;启动T0计数 END

14 [例5.3] 扩展外部中断源:在变频调速器中都设有过流(OC)、过压(OV)、欠压(UV)、过热(OH)这四种故障保护,当任一故障发生时,都要立刻停机处理,避免故障范围扩大。这种情况必须采用中断方式,使单片机立刻响应中断处理。试设计其硬件电路和软件程序。

15 根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如图5-8所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。

16 图5-8 扩展4个外中断源电路

17 主程序和中断服务程序如下: ORG 0000 AJMP ZCX ;转主程序 NOP ORG H AJMP INT ;转中断程序 ORG H

18 ZCX1:MOV SP,#30H ;置堆栈指针 MOV IP,#04H ;设 为最高级 CLR IT ;设 为电平触发 SETB EA ;开中断 SETB EX1 ZCX2:其他处理程序 AJMP ZCX2 ORG H

19 INT1: PUSH PSW ;保护现场 PUSH ACC MOV A,P ;读入P1口低4位状态 ANL A,#0FH JNB ACC0,X ;是OC中断吗?不是则转移 ACALL XY ;调OC处理子程序 X1:JNB ACC1,X ;是OV中断吗?不是则转移 ACALL XY ;调OV处理子程序 X2JNB: ACC2,X ;是UV中断吗?不是则转移 ACALL XY ;调UV处理子程序

20 X3: JNB ACC3,X4 ;是OH中断吗?不是则转移
ACALL XY ;调OH处理子程序 X4: POP ACC POP PSW RETI XY1: OC处理子程序(略) RET


Download ppt "5.2.3 中断请求的响应、撤除及返回 1.中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。 在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。"

Similar presentations


Ads by Google