单片机的默认中断优先级

描述

上一篇教程我们简单认识和学习了中断怎么使用,认识了单片机里面的几种中断源,学习了怎么配置中断的设置

这里简单的复习一下几种中断源

中断符号中断名称
IE0外部中断0(INT0)
ET0Timer0中断
IE1外部中断1(INT1)
ET1Timer1中断
ESUART串口中断
ET2Timer2中断

阳光明媚的秋日,你坐在琴桌前轻抚古琴,这时候门外传来敲门声,你正要起身,身旁茶桌上的水壶里的水烧开了……

你起身,从炉上拿起烧水壶放在一旁,再来到门前打开了门……

提起水壶和开门是两个事件,当两个事件发生的时候总要有顺序的,先提起水壶再开门或者先开门后提起水壶所造成的结果是不同的。往往为了安全,我们会先提起水壶再去开门,这就是我们处理两个事件的顺序

在单片机中,倘若同一个时刻Timer0触发了中断,Timer1也触发了中断,这时候外部中断又触发了。单片机会先执行哪个中断操作呢?

是不是随意执行一个操作呢?

显然不是的,为了保证程序的有序执行,单片机根据“中断优先级”判断中断是否需要优先执行

优先级越高的中断,越优先执行

单片机的默认中断优先级

单片机里面,已经对中断的优先级进行设置,这是C51的所有中断优先级

中断优先级(数字越大越优先)中断符号中断名称
6IE0外部中断0(INT0)
5ET0Timer0中断
4IE1外部中断1(INT1)
3ET1Timer1中断
2ESUART串口中断
1ET2Timer2中断

中断的嵌套

(1)低优先级的中断和高优先级的中断同时触发,单片机优先执行高优先级的中断

单片机

由于中断A的优先级大于中断B的优先级,所以单片机先处理完中断A的任务,再跳转处理中断B的任务,最后跳转回原来的位置,继续执行程序

(2)低优先级中断执行过程中高优先级中断触发中断,单片机跳转执行高优先级中断,再返回执行低优先级中断,执行结束后返回程序

单片机

中断A的优先级大于中断B的优先级,中断B触发,单片机跳转处理中断B的任务,执行到一半的时候,中断A触发,由于中断A的优先级更高,所以单片机先去处理中断A的任务,处理完再跳转回来处理中断B的任务

(3)高优先级的中断处理的过程中低优先级的中断触发,单片机优先处理完高优先级的中断的任务,再执行低优先级的中断的任务

单片机

中断A的优先级大于中断B的优先级,中断A触发,单片机先去执行中断A,执行的过程中中断B触发,由于中断B的优先级小于中断A的优先级,所以单片机在执行完中断A后才会执行中断B的任务

上面中断的执行过程就叫中断的嵌套

到此我们简单的复习一下

中断优先级(数字越大越优先)中断符号中断名称
6IE0外部中断0(INT0)
5ET0Timer0中断
4IE1外部中断1(INT1)
3ET1Timer1中断
2ESUART串口中断
1ET2Timer2中断

下面用这个图示实践以下中断的嵌套

单片机

Timer0先触发,Timer0运行的过程中Timer1触发,由于Timer1的优先级不及Timer0,所以单片机执行完Timer0才处理Timer1,在Timer1的处理过程中遇上了外部中断INT0的触发,单片机先执行INT0的任务,再返回执行Timer1的任务,最后所有的任务都完成了以后,退回主程序

设置中断优先级

我们再看看单片机的默认优先级

中断优先级(数字越大越优先)中断符号中断名称
6IE0外部中断0(INT0)
5ET0Timer0中断
4IE1外部中断1(INT1)
3ET1Timer1中断
2ESUART串口中断
1ET2Timer2中断

有的时候,如果使用默认的优先级,可能难以满足我们对程序的需求,事实上,我们可以手动设置单片机内中断的优先级。

手动设置单片机的优先级涉及到一个寄存器

IP寄存器,0xB8,可位寻址

符号说明
7--
6--
5PT2Timer2优先级设置
4PSUART串口优先级设置
3PT1Timer1优先级设置
2PX1外部中断INT1优先级设置
1PT0Timer0优先级设置
0PX0外部中断INT0优先级设置

当我们给其中的一位写上1的时候就说明我们把这一位的中断优先级提前了

举个简单的例子,如果我们要做一个简单的秒表+时钟电子钟,秒表使用Timer0,时钟使用Timer1,为了让机器使用秒表的时候能让时钟正常走时,所以我们把Timer1的优先级提前,如下

PT1 = 1;

优先级的设置我们会在后面的项目中用到的,后面用到的时候我也会跟大家细细说明的哦

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分