- 中断允许控制由中断允许寄存器IE控制。(interrupt enable)
- 中断优先级控制由中断优先级寄存器IP控制。(interrupt priority)
4.3.1 中断允许寄存器IE
- AT89S52的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。
- IE字节地址为A8H,可位寻址,格式如图4-6所示。
- IE对中断的开放和关闭实现两级控制。
- 有一个总的开关中断控制位EA(IE.7位),
- EA=0时,所有的中断请求被屏蔽;
- EA=1时,开放中断,但6个中断源的中断请求是否允许,还要由IE中的低6位所对应的6个中断请求允许控制位的状态来决定(图4-6)。
IE中各位功能如下:
(1)EA(D7)—中断允许总开关控制位。
- EA=0,所有的中断请求被屏蔽。
- EA=1,所有的中断请求被开放。
(2)ES(D4)——串行口中断允许位。
(3) ET1(D3)——定时器/计数器T1的溢出中断允许位。
(4)EX1(D2)——外部中断1中断允许位。
(5) ET0(D1)——定时器/计数器T0的溢出中断允许位。
(6) IE 的D6为任意态。
(7)EX0(D0)——外部中断0中断允许位。
- E : Enable
- 1:允许中断
- 0:禁止中断
- AT89S52复位以后,IE被清“0”,所有的中断请求被禁止。IE中与各个中断源相应的位可用指令置“1”或清“0”(SETB或CLR指令),即可允许或禁止各中断源的中断申请。若使某一个中断源被允许中断,除了IE相应的位被置“1”外,还必须使EA位置“1”,即EA位置“1”为中断请求的必要条件。
- 改变IE的内容,可由位操作指令来实现(即SETB bit;CLR bit),也可用字节操作指令实现。 AT89S51复位以后,IE被清“0”,所有中断请求被禁止。IE中与各个中断源相应的位可用指令置“1”或清“0”。
【例4-1】
- 若允许片内2个定时器/计数器T1、T0中断,并禁止其他中断请求,请编写设置IE的相应程序段。
(1)用位操作指令
CLR ES ;禁止串行口中断
CLR EX0 ;禁止外部中断0中断
CLR EX1 ;禁止外部中断1中断
CLR ET2 ;禁止定时器/计数器T2中断
SETB ET0 ;允许定时器/计数器T0中断
SETB ET1 ;允许定时器/计数器T1中断
SETB EA ;总中断开关位开放
(2)用字节操作指令
MOV IE,#8AH
- 上述两段程序对IE的设置是相同的。
4.3.2 中断优先级寄存器IP
- AT89S52的中断请求源有两个中断优先级,由软件分别设置为高优先级中断或低优先级中断,可实现:两级中断嵌套
- AT89S52正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序。两级中断嵌套的过程如图4-7所示。
- 各中断源的中断优先级关系,可归纳为两条基本规则:
- 低优先级可被高优先级中断,高优先级不能低优先级中断。如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断。
- 任何一种中断一旦得到响应,不会再被它的同级中断源所中断。
- 中断优先级寄存器IP,其字节地址为B8H,可位寻址。只要用程序改变其内容,可进行各中断源中断优先级的设置,IP寄存器的格式如图4-8所示。
中断优先级寄存器IP各位的含义
(1)PT2—定时器T2中断优先级控制位
(2)PS—串行口中断优先级控制位
(3)PT1—定时器T1中断优先级控制位
(4)PX1—外部中断1中断优先级控制位
(5)PT0—定时器T0中断优先级控制位
(6)PX0—外部中断0中断优先级控制位
-
P : priority
- 1:高优先级
- 0:低优先级
-
中断优先级控制寄存器IP用位操作指令或字节操作指令可更新IP的内容,以改变中断优先级。
-
AT89S52复位以后,IP的内容为0,各个中断源均为低优先级中断。
-
AT89S52的中断系统有两个不可寻址的“优先级激活触发器。
-
一个指示某高优先级的中断正在执行,所有后来的中断均被阻止;另一个触发器指示某低优先级的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。
-
在同时收到几个同优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序见表4-1。
- 由此可见,各中断源在相同优先级的条件下,外部中断0的中断优先权最高,T2溢出中断或EXF2中断的中断优先权最低。
【例4-2】
- IP寄存器初始化,AT89S52的两个外中断请求为高优先级,其他中断请求为低优先级。
(1)用位操作指令
SETB PX0 ;外中断0设置为高优先级
SETB PX1 ;外中断1设置为高优先级
CLR PS ;串行口设置为低优先级
CLR PT0 ;定时器/计数器T0为低优先级
CLR PT1 ;定时器/计数器T1为低优先级
CLR PT2 ;定时器/计数器T2为低优先级
(2)用字节操作指令
MOV IP,#05H
上述的两段程序对IP的设置是相同的。
本文详细介绍了AT89S52单片机中断系统的中断允许寄存器IE和中断优先级寄存器IP,包括其位功能、控制中断的方法及中断优先级的设定。通过设置IE和IP,可以控制中断的开启、关闭以及优先级,实现中断嵌套和多中断源管理。
5034

被折叠的 条评论
为什么被折叠?



