基本型80C51系列单片机有5个中断源,2个优先级,每个中断源可通过软件设置为高优先级或低优先级中断,可以实现二级中断服务嵌套。

中断的优先级

在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。中断的优先级有:查询优先级和执行优先级。

查询优先级

datasheet上默认的查询优先级(IP寄存器不做设置,上电复位后为00H):

外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断

首先查询优先级是不可以更改和设置的,是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序,而与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。

执行优先级。

中断的执行优先级就是你对IP寄存器的设置了。在2个优先级的情况下,某位为1,则相应的中断源为高优先级;为0,则为低优先级。

中断的优先原则

1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求;
2、当同一优先级的几个中断源同时向CPU请求中断时,CPU通过内部硬件查询逻辑电路,按查询优先级判定优先响应哪一个中断请求。
3、正在进行的中断过程不能被新的同级或低执行优优先级的中断请求所中断;
4、正在进行的低执行优先级中断服务,能被高执行优优先级中断请求中断,除非正在执行的低优先级中断服务程序设置了禁止CPU中断某些高优先级的中断。

例:当计数器0中断和外部中断1(按查询优先级,计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括查询优先级比它高的外部中断0计数器0中断。

例:同一执行优先级中的中断申请不止一个时,则有一个中断优先权排队问题。同一执行优先级的中断优先权排队,由中断系统硬件确定的查询优先级决定的。

例:设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

中断嵌套

当一个中断正在执行的时候,如果事先设置了中断优先级寄存器IP,那么当一个更高优先级的中断到来的时候会发生中断嵌套,如果没有设置则不会发生任何嵌套;
如果有同一个优先级的中断触发,它并不是在“不断的申请”,而是将它相应的中断标志位置即IE寄存器的某位置位,当CPU执行完当前中断之后,按照查询优先级重新去查询各个中断标志位,进入相应中断。
要记住,没有设置IP时,单片机会按照查询优先级来排队进入服务。如果要想让某个中断优先响应, 则要设置IP,更改执行优先级(或者说物理优先级)。要注意的是,当设置了IP后,当低执行优先级中断在运行时,如果有高执行优先级的中断产生,则会嵌套调用进入高执行优先级的中断。
如果你是用C语言写的程序,并在中断服务时 using 了寄存组,要注意,两个不同执行优先级的中断服务程序不要 using 同一组寄存器。

看两个问题,如下:
1 在各个中断都是低优先级的时候,如果定时器0的溢出进入中断。在这个中断处理的过程中,外部中断0也被触发了,那么是不是要发生中断嵌套?
2 如果定时器0发生中断的时候,进入中断处理程序,这个时候外部中断1条件触发条件满足了。因为定时器0自然优先级比外部中断1高,那么定时器0的中断处理程序继续执行。假设定时器中断处理程序执行的过程中,外部中断1的触发。条件消失了,那么等定时器0的中断处理完后,程序还是会进入外部中断1处理程序吗?

答案1:在IP事先设置了外部中断0的优先级的情况下,CUP会中止定时器0的中断服务,进入外部中断0服务程序,执行完以后再回到定时器0中断服务程序。否则不会。
答案2:肯定会进入中断的;外部中断1的触发条件满足后会置位外部1的中断标志,即使后来外部中断1的触发条件消失了,也不会清除已置位的中断标志,所以等定时器0的中断处理完后,程序判断外部中断的中断标志为1后依然会进入外部中断1处理程序的,只有在外部中断1处理程序中执行reti指令才会硬件清除外部中断1的中断标志(这也正是为什么中断返回使用reti指令而不可以用ret替换的原因)…

中断优先级寄存器 IP

×:无效位。
PS:串行I/O中断优先级控制位。PS=1,高优先级;PS=0,低优先级。
PTl:定时器/计数器1中断优先级控制位。PTl=1,高优先级;PTl=0,低优先级。
PXl:外部中断1中断优先级控制位。Pxl=1,高优先级;PXl=O,低优先级。
PT0:定时器/计数器o中断优先级控制位。PT0=1,高优先级;PTO=0,低优先级。
Px0:外部中断0中断优先级控制位。Px0=1,高优先级;Px0=0,低优先级。

51中断优先级及中断嵌套相关推荐

  1. 51单片机除c语言 中断嵌套,关于51系列单片机中断嵌套 - 关于单片机中断嵌套总结...

    关于51系列单片机中断嵌套 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到 ...

  2. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

  3. c51中断优先级c语言,51单片机的中断优先级及中断嵌套

    说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到中断之前,我先来定义一下优先 ...

  4. 51单片机c语言中断嵌套,51单片机的中断优先级及中断嵌套

    说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到中断之前,我先来定义一下优先 ...

  5. 51单片机的中断嵌套怎么实现呢?

    今天在练习51单片机的嵌套中断时,发现了一个奇怪的点,就是中断服务函数在执行的时候,无论优先级的高低,都不能被打断.嗯,就是外部中断0和外部中断1都不能打断定时器0的中断服务函数.(优先级:外部中断0 ...

  6. 51单片机之中断系统

    51单片机之中断系统 中断系统 四种中断类型: 外部中断: 定时器/计数器T0.T1中断: 串行口中断: 定时器/计数器T2中断: 中断入口: 与中断相关的特殊功能寄存器: 中断优先级: 中断响应时间 ...

  7. 【手把手教你学51单片机】中断的优先级

    注:本文章转载自<手把手教你学习51单片机>!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小 ...

  8. c51中断优先级c语言,基于proteus的51单片机开发实例(14)中断嵌套和中断优先级...

    1. 基于proteus的51单片机开发实例(14)中断嵌套和中断优先级 1.1. 实验目的 在前面实例中我们已经学习了51单片机的定时器/计数器中断,外部中断,通过这些实例,知道了中断电路的设计,中 ...

  9. 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友,拥有这一篇博文就够了,深入浅出,里面包含了寄存器,外部中断.定时器中断.中断嵌套等的讲解,还有代码实战.快一万字,写得不容易,还请大家点赞支持一下,后续持续更新 (一)寄存 ...

最新文章

  1. 为什么做好数据安全这么难?黑客太牛?
  2. 【darknet速成】Darknet图像分类从模型自定义到测试
  3. c++ primer 5th 练习11.38自己编写答案(用无序容器重写单词计数程序)
  4. WMAP环境上传图片报错【找不到临时文件夹】解决方案
  5. leetcode111. 二叉树的最小深度
  6. Struts使用细节
  7. 小特效【较完善的滑动下拉菜单】【购物车加减器】
  8. 苹果Mac修改图标的一种简单方法
  9. jquery 获取整个表单_15个表单验证jQuery插件和库
  10. opengl超级宝典(第5版)的环境搭建
  11. 睿思荐片--最好的电影,最全的排行
  12. Google地图开发API
  13. meltdown论文翻译
  14. 如何从零开始解读什么叫产品经理
  15. 微信小程序video默认不播放且显示视频第一帧
  16. JavaFx笔记二:布局
  17. Windows远程控制家里的电脑
  18. 根号1+x的平方分之一的不定积分
  19. 计算机桌面图标在地址栏,我的电脑地址栏不见了怎么办
  20. 怎么使用 button的tag

热门文章

  1. iPhone的呼叫转移来电等待如何设置?
  2. 汇编语言快速回顾(以x86_64为例)
  3. 一篇文章带你认识芯片分类及代表企业
  4. 用友U8 cloud,信创云ERP的数智先锋
  5. 4.16 日期的输入和自定义日期的格式 [原创Excel教程]
  6. 函数f的上确界/下确界(sup/inf)的通俗理解,及其与最大值/最小值(max/min)的区别
  7. [hdu4416 Good Article Good sentence]后缀自动机SAM
  8. 关于LTE终端的所谓的五模、七模、十频、十一频
  9. 到Visual Studio Code en 2020中的实际实现
  10. matlab水果图片,matlab数字图像处理-----------------水果识别