51 单片机的默认中断优先级都是低级及中断嵌套 51 单片机(80C51 系列)有 5 个中断源,2 个优先级,可以实现二级中断服务嵌套
现在很多扩展的 51 单片机已经有 4 个优先级(或更多)和更多的中断源了
在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了
实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂
中断的优先级有两个:查询优先级和执行优先级
什么是查询优级呢
我们从 datasheet 或书上看到的默认(IP 寄存器不做设置,上电复位后为 00H)的优先级:外部中断 0 >; 定时/计数器 0 〉; 外部中断 1 〉; 定时/计数器 1 〉; 串行中断或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART或 PX0>;PT0〉;PX1>;PT1〉;PS〉;
其实都是查询优级
首先查询优先级是不可以更改和设置的
这是一个中断优先权排队的问题
是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序
而这与是否发生中断服务程序的嵌套毫不相干
当 CPU 查询各个中断标志位的时候,会依照上述 5 个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务
例如:当计数器 0 中断和外部中断 1(按查询优先级,计数器 0 中断〉;外部中断 1)同时到达时,会进入计时器 0 的中断服务函数;但是在外部中断 1 的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断 0 计数器 0 中断
而中断的执行优先级就是你对 IP 寄存器的设置了
在 2 个优先级的情况下,某位为 1,则相应的中断源为高优