【51单片机系列】中断优先级介绍及使用

文章来源:《51单片机原理及应用(第3版)》5.4节。

51单片机采用了自然优先级和人工设置高、低优先级的策略。

当CPU处理低优先级中断,又发生更高级中断时,此时中断处理过程如下图所示。

一个正在执行的低优先级中断服务程序能被高优先级中断源的中断申请所中断,形成中断嵌套。
相同级别的中断源不能相互中断其服务程序,也不能被另一个低优先级的中断源所中断。
如果CPU正在执行高优先级的中断服务子程序,不能被任何中断源所中断。

中断嵌套

上电时,中断优先级寄存器IP被清零,每个中断源都处于同一个优先级,这时如果其中几个中断同时产生中断请求,则CPU按照片内硬件优先级链路的顺序即自然优先级响应中断,硬件优先级有高到低的顺序如下表所示:

中断源 默认中断级别 中断号
外部中断0——INT0 最高 0
定时/计数器0中断——T0 第2 1
外部中断1——INT1 第3 2
定时/计数器1中断——T1 第4 3
串口中断——TI/RI 第5 4
定时/计数器2中断——INT2(52独有) 第6 5

如果希望某个中断源有更高的优先级,可以通过设置中断优先级寄存器IP指定更高优先级的中断。IP各位如下表:

位序 D7 D6 D5 D4 D3 D2 D1 D0
位名称 / / / PS PT1 PX1 PT0 PX0

IP中的某位设置为,则相应的中断就是高优先级;否则就是低优先级;在同一个优先级下,中断响应的顺序和自然优先一样。IP可位寻址。

各个位说明:

  • PS:串口中断优先级控制位
  • PT1:定时器1优先级控制位
  • PX1:外部中断1优先级控制位
  • PT0:定时器0优先级控制位
  • PX0:外部中断0优先级控制位

比如要求将外部中断1,定时器0设为高优先级,其它为低优先级,那么应该置PT0=1,PX1=1,高三位取任意值,设置为0,那么IP的值应该为00000110B=06H,此时如果5个中断同时发生,中断响应的次序为:定时器0中断→外部中断1→外部中断0→定时器1→串口中断。

中断优先级应用示例

设置外部中断1为高优先级,在两个外部中断引脚(P3.2和P3.3)接两个按键,P1口连接LED。连接P3.2口的按键按下后,LED循环点亮;连接P3.3口的按键按下后,LED全部点亮-熄灭,连续3次。

Proteus设计原理电路图如下:

中断优先级应用示例原理电路图

软件设计

源程序清单:

/*
	实现功能:中断优先级使用示例,设置外部中断1为高优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值