引脚中断信-starter使用手册
阿范:你还真想往后听啊,该回到单片机上来了,我们还是解决一下P3.3引脚信号不能被执行导致的P0.7口小灯不闪的问题吧。
赵岩:哦,对啊,那怎么办呢?
阿范:其实在单片机内部有一个能够改变五个中断源优先级别的控制寄存器,他就是IP。有关IP的详细应用请继续向下看。
赵岩:中断源优先级别?这听起来有点复杂啊。
阿范:其实不复杂。想象一下土匪窝儿里的等级排序,在单片机中也有一个自然的中断源级别排序。五个中断源自然优先顺序由高到低分别是:P3.2引脚中断信号、定时器/计数器T0、P3.3引脚中断信号、定时器/计数器T1、串口收发数据完成中断。想要改变它们的优先级别吗?很简单,只需通过设置中断优先级寄存器IP来改变各个中断源的级别。详细介绍可以参考单片机中断系统的控制寄存器IE和IP和硬件中断错误寄存器介绍。
赵岩:那这些控制寄存器具体是怎么工作的?
阿范:IP的各位具体内容如下:PX0: 外部中断0(P3.2引脚)优先级控制,0表示低优先级,1表示高优先级;PT0: T0(计数或定时溢出)中断优先级控制,0表示低优先级,1表示高优先级;PX1: 外部中断1(P3.3引脚)优先级控制,0表示低优先级,1表示高优先级;PT1: T1(计数或定时溢出)中断优先级控制,0表示低优先级,1表示高优先级;PS: 串行口收、发完成中断优先级控制,0表示低优先级,1表示高优先级。有关中断优先级的更多详细解释,可以参考51单片机中断优先级及中断嵌套。
赵岩:那如果我同时设置多个中断源为高优先级,会发生什么?
阿范:当把某一位设置成1了,则该位对应的中断优先级别就变成高的了。如果多位都设置成1,这些位对应的中断级别就都高于那些没有设置成1的中断。但在设置成1的中断中,它们的顺序仍然按照原来的自然顺序排列。比如,如果将PS位设置成1(SETB PS),串口中断级别就会提高;如果再将PX0位设置成1(SETB PX0),则此时外部引脚P3.2对应的中断级别更高,然后是串口中断,接下来依次是定时器T0、外部引脚P3.3中断、定时器T1。具体实例和代码可以参考51单片机中断优先级以及中断嵌套。
赵岩:这样说我明白了,通过设置这些寄存器,我们可以灵活地控制各个中断源的优先级,确保重要的任务得到及时响应。
阿范:没错,通过合理地设置IP寄存器中的位,我们可以优化系统的响应速度,确保重要中断不会被忽略。
赵岩:感谢你的解释,这下我对中断优先级的控制有了更清晰的理解。为了进一步学习相关知识,我会参考51单片机中断寄存器使用注意的问题。
阿范:随时欢迎继续交流,你的进步让我感到很开心!
赵岩:谢谢阿范,我会努力的!
(相关资料和实例详见:单片机中断优先级实验 和 AVR中断优先级以及中断嵌套处理)。