干货|一文读懂单片机里面的“中断”优先级
中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。
中断的产生背景,实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进入接电话的“中断”程序当中去,就在接电话的同时,听到了水开的声音,水开的“中断”也发生了,我们就必须要放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。
还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的“中断”发生了,我们要进入关煤气的“中断”程序当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方式是先把煤气关闭,再去接听电话,最后再看电视。
从这两个过程中,我们可以得到一个结论,就是最最紧急的事情,一旦发生后,我们不管当时处在哪个“程序”当中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其它事情。
在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。
中断优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。来看表1和表2。
表1: IP——中断优先级寄存器的位分配(地址0xB8、可位寻址)
表2: IP——中断优先级寄存器的位描述
IP 这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是 0,当我们把某一位设置为 1 的时候,这一位的优先级就比其它位的优先级高了。
比如我们设置了 PT0位为 1 后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器 T0 发生中断,作为更高的优先级,程序马上就会跑到 T0 的中断程序中来执行。
反过来,当单片机正在 T0中断程序中执行时,如果有其它中断发生了,还是会继续执行 T0 中断程序,直到把 T0 中的中断程序执行完毕以后,才会去执行其它中断程序。
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。
所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。
表3: 中断查询序列
那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在表3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。
从表3中可以看到一共有 1~6 共 6 级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?
答案是多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见的多了,那就是出于某种原因我们暂时关闭了总中断,即 EA=0,执行完一段代码后又重新使能了总中断,即 EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同时请求响应了,很明显,这时也必需有个先后顺序才行,这就是非抢占优先级的作用了——如表3中,谁优先级最高先响应谁,然后按编号排队,依次得到响应。
抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。在后续的学习过程中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。
实例讲解,单片机常用中断控制子程序
单片机系统中,应用最多的中断方式是中断I/O方式。中断I/O方式提供了5个中断源,即两个外部输入中断源INT0(P3.2或称为外部中断源0)和INT1(P3.3或称为外部中断源1),两个片内定时器T0和T1的溢出中断源TF0和TF1,一个片内串行口发送或接收中断源TI或RI。
中断由中断控制寄存器控制,不论哪个中断,都必须进行初始化,中断响应必须有中断响应程序。5个中断的控制编程如下。
相关问答
什么是 单片机 的 中断 ?单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一事件(如定时时间到,超压报警等),请求CPU迅速去处理,CPU暂时停止当前程序的运行,...
请说明51 单片机 中的 中断 入口地址的含义?1,51单片机中的中断入口地址的含义就是去执行中断连接的程序,一般在程序的末尾段。2,若51单片机使用C语言编程,51单片机中断号的排列顺序是按中断向量地址由...
51 单片机 的 中断 源 和 中断 入口?51单片机的中断源就是指能够打断当前顺序执行的功能模块,比如外部中断事件源,定时器中断事件源,通讯模块数据发送接收中断源等。中断入口是指打断当前顺序执行...
80C51 单片机 的五个 中断 的中断标志位分别是什么?中断又是如何产生的?MCU会在每个机器周期的S6查询每个中断请求的中断标志位,所以本质上是轮询。举个例子,51单片机有5个中断源,p3.2引脚触发INT0中断,中断请求标志位IE0=1,CPU...
51 单片机中断 入口地址是优先等级?1,51单片机中的中断入口地址的含义就是去执行中断连接的程序,一般在程序的末尾段。2,若51单片机使用C语言编程,51单片机中断号的排列顺序是按中断向量地址...
8051 单片机 的 中断 系统哪四个部分组成?51单片机有5个中断源,两个中断优先级:INT0、T0、INT1、T1、串行口中断(包括串行接收中断RI和串行发送中断TI)。这5个中断源的中断入口地址分别...
at89c51 单片机中断 源优先级?AT89C51单片机的中断优先级分为高优先级和低优先级两种,其优先级可以通过编程进行设定。当多个中断源同时请求中断时,CPU会先处理高优先级的中断,然后再处理低...
51 单片机 有哪几个 中断 源?几个优先级?mcs-51单片机有5个中断源,分别为:1、外部中断0(INT0):默认中断级别最高,中断入口地址0003H;2、定时/计数器0(T1):默认中断级别第2,中断入口地址000BH;3...
80c51 单片机 有几个 中断 源,如何允许和禁止他们?基本型51单片机有5个中断源,分别是两个外部中断INT0/INT1、串口通信中断和两个定时计数器中断T0/T1,通过对IE寄存器的位操作可以允许或禁止它们,IE的每个位对...
51 单片机中断 系统的组成?MCS51单片机的中断系统由中断源、中断允许控制、中断优先级控制和中断向量组成。中断源的意思是哪些事件可以触发中断,比方说,外部中断、定时器中断、通讯中...