51单片机中断优先级以及中断嵌套

发布者:cheng1984最新更新时间:2021-04-20 来源: eefocus关键字:51单片机  中断优先级  中断嵌套 手机看文章 扫描二维码
随时随地手机看文章

在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂。


中断的优先级有两个:查询优先级和执行优先级。


什么是查询优级呢?我们从datasheet或书上看到的默认(IP寄存器不做设置,上电复位后为00H)的优先级:


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


或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART


或 PX0>PT0>PX1>PT1>PS>......


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


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


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


关于中断的优先级有三条原则:


1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求;


2、正在进行的中断过程不能被新的同级或低行优优先级的中断请求所中断;


3、正在进行的低行优优先级中断服务,能被高行优优先级中断请求中断;


若:同一执行优先级中的中断申请不止一个时,则有一个中断优先权排队问题。同一执行优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,优先权自高到低的顺序即:


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


例如:设置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替换的原因)...


关键字:51单片机  中断优先级  中断嵌套 引用地址:51单片机中断优先级以及中断嵌套

上一篇:C8051F020在LED显示控制系统中的应用
下一篇:基于51单片机-C语言之预处理总结

推荐阅读最新更新时间:2024-11-09 10:09

51单片机基础之DS18B20温度传感器
外型: 代码: main.c 文件 #include smg.h #include ds18b20.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i=0; int t
[单片机]
<font color='red'>51单片机</font>基础之DS18B20温度传感器
51单片机启动过程
STC8G2K64S4-48PIN 系列、STC8G2K64S2-48PIN 系列单片内部集成了 64K 字节【0000H-FFFFH】的 Flash 程序存储器(ROM)。 1:单片机复位后,程序计数器(PC)的内容为 0000H,从 flash的0000H 单元开始执行程序。【PC是一个16位的计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,无法用指令对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。】 2:另外中断服务程序的入口地址(又称中断向量)也位于程序存储器单元。在程序存储器中,每个中断
[单片机]
stc51单片机怎么学, 先掌握STC单片机程序烧录方法!
今天我在这里和大家探讨一下关于 51单片机怎么学 这个话题。 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机的框架,单片机的寄存器,以及单片机的操作指令,用汇编语言实现一些简单的功能。 当时学习的时候知识课本知识,而又没有配套的开发板,可以让我们动手。 当时的感触就是一个字:难,两个字:枯燥。 也许大多数的同学和我是一样的,一大堆指令,感到非常的无趣,没有什么意思,考试也是一大堆理论知识。 当然现在大学里的课程可能已经做了升级,关于单片机编程以及 单片机C语言 这一块了不知道大学里有没有增加,课程有没有优化的更加人性化一点。 后来参加电赛,自己买了一个开发板,不断的编代码,实践。 刚开始用汇编语言,
[单片机]
基于51单片机之间的双向通信(Proteus仿真)
具体功能实现: 甲单片机通过按键可以控制乙单片机的LED灯,而乙单片机通过按键可以让连接甲单片机的数码管数字自增加一。 使用器件: AT89C51、按键、排阻、4只LED灯、2片MAX232芯片、COM口(CONN-D9F)、数码管、若干电阻 Proteus仿真原理图: 仿真: 乙机控制甲机的数码管显示: 甲机控制乙机的LED灯: 知识介绍: Proteus布线 为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。 定时中断系统简图 定时器资源 定时器个数:3个(T0,T1,T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。 (T0和T1的操作方式是所有5
[单片机]
利用AT89C2051单片机对系统协调控制设计的大气温度采集和记录系统
1 引 言 大气温度的测量具有重要意义, 一般是采用各种温度计进行人工测量, 并定时记录测量结果, 这种方法费时费工, 十分不便。本文提出了一种非常小巧的大气温度测量和记录装置, 能对范围为- 55 ℃ ~ + 125 ℃ 的温度进行定时自动测量, 同时记录测量结果, 精度最高可达0. 0625℃ 。 2 系统原理 系统结构如图1所示。系统主要由AT89C2051单片机和外围电路构成。其基本思想是由串行时钟芯片DS1306 提供时间基准, 由温度传感器DS18B20进行温度测量, 温度数据存储在DS2433中。AT89C2051单片机负责整个系统的协调控制。 AT89C2051是一款低电压, 高性能的CMOS 8位单片机, 片
[单片机]
利用AT89C20<font color='red'>51单片机</font>对系统协调控制设计的大气温度采集和记录系统
51单片机——串行通信
1 概述 通信的概念比较广泛,在单片机技术中,单片机与单片机或单片机与其他设备之间的数据传输称为通信。 1.1 并行通信和串行通信 根据数据传输方式的不同,可将通信分并行通信和串行通信两种。同时传输多位数据的方式称为并行通信。同时传输一位数据的方式称为串行通信。 如图1(a)所示,在并行通信方式下,单片机中的8位数据10011101通过8条数据线同时送到外部设备中。并行通信的特点是数据传输速度快,但由于需要的传输线多,故成本高,只适合近距离的数据通信。逐位传输数据的方式称为串行通信。 如图1(b)所示,在串行通信方式下,单片机中的8位数据10011101通过一条数据线逐位传送到外部设备中
[单片机]
<font color='red'>51单片机</font>——串行通信
51单片机学习笔记5 -- 外部中断
1.外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 2.引脚功能复用 51单片机芯片内部有很多外设,这些外设的引脚都是与IO口复用的。也就是说,一个IO口如果可以复用为内置外设的功能引脚,那么当这个IO口作为内部外设使用的时候,就叫做复用(一般来说,当某个引脚作为复用功能使用时,它将不能作为其他复用功能和普通IO来使用,即单个引脚只能作为普通IO或单个复用功能来使用)。 51单片机也有引脚具备复用功能,如下图P3端口的引脚可复用成串口收发或外部中断 3.中
[单片机]
<font color='red'>51单片机</font>学习笔记5 -- 外部<font color='red'>中断</font>
51单片机之上拉与下拉电阻
1 基础知识 1.1 三极管 三极管的类型有两种:PNP与NPN 三极管的简化理解: 基极(B)是一个开关, 当开关打开时,集电极(C)与发射极(E)就导通了; 当开关闭合时,集电极(C)与发射极(E)就断开了。 导通方向的判定: (NPN管)箭头是C指向E,电流就从C流向E; (PNP管)箭头是E指向C,电流就从E流向C,要注意控制端电流的方向。 1.2 场效应晶体管 场效应管的电流方向: N型沟道场效应管漏极电流是从D流向S的; P型沟道场效应管漏极电流是从S流向D的; G上没有电流,场效应管是通过电压控制导通与关断的。 2 输出模式 2.1 开集输出 单片机 在输出模式下,集电极直
[单片机]
<font color='red'>51单片机</font>之上拉与下拉电阻
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved