《手把手教你学51单片机-C语言》之六 中断与数码管动态显示
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符号 | -- | -- | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
复位值 | -- | -- | 0 | 0 | 0 | 0 | 0 | 0 |
表6-5IP——中断优先级寄存器的位描述
位 | 符号 | 描述 |
7 | -- | 保留 |
6 | -- | 保留 |
5 | PT2 | 定时器2中断优先级控制位 |
4 | PS | 串口中断优先级控制位 |
3 | PT1 | 定时器1中断优先级控制位 |
2 | PX1 | 外部中断1中断优先级控制位 |
1 | PT0 | 定时器0中断优先级控制位 |
0 | PX0 | 外部中断0中断优先级控制位 |
IP这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当我们把某一位设置为1的时候,这一位的优先级就比其它位的优先级高了。比如我们设置了PT0位为1后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器T0发生中断,作为更高的优先级,程序马上就会跑到T0的中断程序中来执行。反过来,当单片机正在T0中断程序中执行时,如果有其它中断发生了,还是会继续执行T0中断程序,直到把T0中的中断程序执行完毕以后,才会去执行其它中断程序。
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。
那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在表6-3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。从表中可以看到一共有1~6共6级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?
答案是多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当
51单片机C语言中断数码管动态显 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)