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

中断的优先级

中断优先级的内容,大概先通过我的介绍大概了解以下即可,后边实际应用的时候我们再详细讲解。
在讲中断产生背景的时候,我们仅仅讲了看电视和烧水的例子,但是实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进去接电话的"中断"程序中去,就在接电话的同时,听到了水开的声音,水开的"中断"也发生了,我们就必须放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。
还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的"中断"发生了,我们要进去关煤气的"中断"程序
当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方法是先把煤气关闭,再去接听电话,最后再看电视。
从这两个过程中,我们可以得到一个结论,就是最最紧急的事情,一旦发生后,我们不管当时在哪个"程序"中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其他事情。在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,在本章节我们先简单介绍一下相关寄存器,不做例程说明。

中断优先级有两种,一种是抢占优先级,一种是固有优先级

先介绍抢占优先级。来看表6-4和表6-5

IP这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当我们把某一位设置为1的时候,这一位的优先级就比其他位的优先级高了 。比如我们设置了PT0位为1后,当单片机在主循环或者其他任何中断程序中执行时,一旦定时器T0发生中断,作为更高的优先级,程序马上就会跑到T0的中断程序中来执行。反过来,当单片机正在T0中断程序中执行时,如果有其他中断发生了,还是会继续执行T0中断程序,直到把T0中断程序执行完毕以后,才会去执行其他中断程序。
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。
所以抢占的概念就是:
优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。
当然反过来,优先级低的中断是不能打断优先级高的中断的。
那么既然有抢占优先级,自然也就有非抢占优先级了,也称为固有优先级。在表6-3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。 从表中可以看到一共有1~6共6级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到相应。既然不能抢占,那么这个优先级有什么用呢?
答案是:多个中断同时存在时的仲裁。
比如说有多个中断同时发生了,当然实际上发生这种情况的概率极低,但另外一种情况就常见的多了,那就是**处于某种原因我们暂时关闭了总中断,即EA = 0,执行完一段代码后又重新使能了总中断,即EA = 1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到相应,而当总中断再次使能后,它们就会在同时请求响应了,很明显,这时也必须有个先后顺序才行,这就是非抢占优先级的作用了——如表6-3中,谁优先级最高先相应谁,然后按编号排队,依次得到相应。
抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。在后续的学习中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。

【手把手教你学51单片机】中断的优先级相关推荐

  1. 手把手教你学51单片机——函数进阶与按键

    目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...

  2. 第11章 UART 串口通信(手把手教你学51单片机pdf部分)

    手把手教你学51单片机-C语言版.pdf  

  3. c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...

  4. 数码管动态显示c语言,《手把手教你学51单片机-C语言》之六 中断与数码管动态显示...

    中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务.本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系 ...

  5. 手把手教你学51单片机-c语言版期末考试,手把手从零教你学51单片机

    课程简介: 51单片机的教程及开发板真的很多,我曾经也从零学单片机,看过的视频教程及玩过的开发板也比较多,但很多都是为了卖发板而做视频教程.从头到尾的就每个模块做些例子,或者就送些例子,而例子中所涉及 ...

  6. 《手把手教你学51单片机》之十三------1602液晶与串口的应用实例

    第13章 1602液晶与串口的应用实例 理论上的内容要想逐步消化掌握,必须得通过大量的实践进行巩固,否则时间一长,极容易忘掉.尤其是一些编程相关的技巧,就是靠不停的写程序,不停的参考别人的程序慢慢积累 ...

  7. 手把手教你学51单片机-如何学习单片机

    大多数大学生之所以最后变的平庸,不是因为脑子多么笨,也不是全怪自己贪玩不上进,只是没有一个好的领路人,许多学校可能挂着导师的名头,但是多数是挂羊头卖狗肉或者是干脆不管.最后等大学生毕业之后,那些所谓的 ...

  8. 手把手教你学51单片机-点亮你的LED

    单片机内部资源 Flash--程序存储空间.对于单片机来说 Flash 最大的意义是断电后数据 不丢失. RAM--数据存储空间.RAM 是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数 ...

  9. 手把手教你学51单片机-变量进阶与点阵LED

    变量的作用域 所谓的作用域就是指变量起作用的范围,也是变量的有效范围.变量按他的作用域可以 分为局部变量和全局变量. 局部变量 在一个函数内部声明的变量是内部变量,它只在本函数内有效,在本函数以外是不 ...

最新文章

  1. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
  2. qt编写activex_Qt中使用ActiveX(一)
  3. android 点击字体,图片背景效果一起变换Demo
  4. 听说你们找我很久了?
  5. java 常量变量使用_java常量和变量入门教程
  6. 【年度总结】2016年年度总结
  7. matlab如何测两点的角度_根据2点经纬度,计算方位角,以及计算2条线的夹角
  8. git 创建分支提交远程分支
  9. iPhone唯一标识符
  10. 华为鸿蒙 os 适配机型曝光,华为鸿蒙OS 2.0首批适配机型曝光
  11. Hibenate映射属性
  12. NOIP2017 D2T1 奶酪
  13. ajax 微信code获取_ajax实现微信网页授权登录
  14. Tomcat优化大全,进来看了,真就会了
  15. Resolver error Error Downloading VS Code Server failed - please install either curl or wget on the
  16. 100个经典C语言程序(益智类)
  17. 内存管理、磁盘和文件拾遗
  18. Oracle 存储过程中,解决变量使用 in条件时,查询无效问题
  19. python添加横线代码_Python中的五种下划线
  20. vue框架在ie浏览器下的问题以及解决方法

热门文章

  1. 【工控老马】欧姆龙PLC Socket发送Fins/TCP命令解析
  2. bat批处理命令以管理员权限执行powershell命令
  3. 环洋市场调研-2021年全球颜料红2行业调研及趋势分析报告
  4. GeoMesa处理SHP数据
  5. 计算机右键管理无法访问指定设备,一直出现这个“Windows无法访问指定设备”怎么办?...
  6. IoT-阿里云物接入套件
  7. micropython plc_PLC线到底该怎么接?PLC系统如何设计?PLC软编程方法
  8. 数学建模之模型代码全归纳——叁:分析类模型Ⅰ拟合法
  9. 办公室布线电脑网络布线方案
  10. 数据结构-二叉树[递归实现](构造,析构,先序遍历,中序遍历,后续遍历,层次遍历)