【单片机】4.3 中断允许与中断优先级的控制

本文详细介绍了AT89S52单片机中断系统的中断允许寄存器IE和中断优先级寄存器IP,包括其位功能、控制中断的方法及中断优先级的设定。通过设置IE和IP,可以控制中断的开启、关闭以及优先级,实现中断嵌套和多中断源管理。

  • 中断允许控制由中断允许寄存器IE控制。(interrupt enable)
  • 中断优先级控制由中断优先级寄存器IP控制。(interrupt priority)

4.3.1 中断允许寄存器IE

  • AT89S52的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。
  • IE字节地址为A8H可位寻址,格式如图4-6所示。
图4-6 中断允许寄存器IE的格式
  • 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所示。
图4-7 两级中断嵌套的过程
  • 各中断源的中断优先级关系,可归纳为两条基本规则:
    • 低优先级可被高优先级中断,高优先级不能低优先级中断。如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断。
    • 任何一种中断一旦得到响应,不会再被它的同级中断源所中断。
  • 中断优先级寄存器IP,其字节地址为B8H,可位寻址。只要用程序改变其内容,可进行各中断源中断优先级的设置,IP寄存器的格式如图4-8所示。
图4-8 IP寄存器的格式
中断优先级寄存器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的设置是相同的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值