51单片机(十四)—— 中断功能介绍

发布者:开国古泉最新更新时间:2021-07-16 来源: eefocus关键字:51单片机  中断功能  中断源 手机看文章 扫描二维码
随时随地手机看文章

      中断是单片机的一个重要功能,本文我们就对51单片机的中断进行介绍。


      所谓“中断”,通俗一点讲,就是单片机停止正在执行的任务,转去执行其它的急需解决的任务,当这个任务完成之后,在回到原来的任务继续执行。中断就是为了使单片机能够对外部或内部随机发生的事件进行实时处理而设计的。中断功能的存在,很多程度上提高了单片机处理外部或内部事件的能力。中断功能是我们在学习单片机过程中必须掌握的。


        STC89C516单片机内部有6个中断源,也就是说,有6种情况发生时,会使单片机去处理中断程序。


        为了能让大家更容易理解中断的概念,我们举一个通俗的例子:你打开火,烧一壶水,然后去扫地。在扫地过程中,突然听到水壶发出的水开的报警声,这时,你停止扫地,立即去关掉火,然后将开水灌进暖水瓶中,灌完开水之后你又回去扫地,这个过程就发生了一次中断,这个过程如下图所示,扫地是个主任务,水开报警将扫地中断,导致去灌水,灌完水之后有回来继续扫地。

        对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理事件B(中断发生),CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务),待CPU处理完事件B后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,其流程如下图所示。

       再回来分析一下刚才举的生活实例,你的主任务是扫地,水开报警是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后又在回去继续扫地,相当于处理完中断处理程序后返回主程序继续执行主程序。这里需要注意的是,水开是随时可能发生的,但是无论什么时候发生,只要水一开,就要立即去处理它。处理之后再接着继续扫地。单片机在执行程序时,中断也随时可能发生。但无论何时发生,一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。


       引起CPU中断的根源,称为中断源,中断源性CPU提出中断清求,CPU暂时中断原来的事件A,转去处理事件B,对事件B处理完毕之后,在回到原来中断的地方,称为中断返回。实现上述中断的功能部件称为中断系统


中断开启与关闭,设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的。


        与中断有关的知识点还有一个叫中断嵌套,意思是说:如果单片机正在处理一个中断程序,此时,又有另一个中断优先级别更高的中断现象发生,单片机会停止当前的中断程序,而转去执行新的中断程序,新的中断程序处理完毕后再回到刚才停止的中断程序出继续执行,执行完这个中断后再返回主程序继续执行主程序。中断嵌套的流程图如下图所示。

        当设计中断时,还有一个重要的问题:中断优先级。单片机在执行程序时,可能会遇到同一时刻发生两个中断的情况,那么单片机该先执行哪个中断呢?这取决于单片机内部一个特殊功能寄存器——中断优先级寄存器的设置情况。通过设置中断优先级寄存器,我们可以告诉单片机,当两个中断同时出现时,先执行哪个中断程序。若没有设置操作优先级寄存器,单片机会按照默认的一套优先级自动处理。


STC89C516单片机内部有6个中断源,它们分别为:


INT0—外部中断0,由P32端口线引入,低电平或下降沿触发中断。


INT1—外部中断1,由P33端口线引入,低电平或下降沿触发中断。


T0—定时器/计数器0中断,由T0计数器计满回零引起。


T1—定时器/计数器1中断,由T1计数器计满回零引起。


T2—定时器/计数器2中断,由T2计数器计满回零引起。


TI/RI—串行口中断,串行端口完成一帧字符发送/接收后引起。


单片机的6个中断源的默认中断优先级别如下表所示。

image.png

        接下来我们来介绍一下,在单片机中断使用过程中经常用到的两个寄存器:中断允许寄存器IE和中断优先级寄存器IP。


(1)中断允许寄存器IE


        中断允许寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中字节地址为A8H,位地址(由低位到高位)分别为A8H~AFH,该寄存器可进行位寻址,即可以对这个寄存器的每一位进行操作。单片机复位时IE寄存器全部被清0,这个寄存器的各位如下表所示。

image.png

EA—全局中断允许位。


EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开和关闭。


EA=0,关闭全部中断。


--—无效位。


ET2—定时器/计数器2中断允许位。


ET2=1,打开T2中断。


ET2=0,关闭T2中断。


ES—串行口中断允许位。


ES=1,打开串行口中断。


ES=0,关闭串行口中断。


ET1—定时器/计数器1中断允许位。


ET1=1,打开T1中断。


ET1=0,关闭T1中断。


EX1—外部中断1中断允许位。


EX1=1,打开外部中断1中断。


EX1=0,关闭外部中断1中断。


ET0—定时器/计数器0中断允许位。


ET0=1,打开T0中断。


ET0=0,关闭T0中断。


EX0—外部中断0中断允许位。


EX0=1,打开外部中断0中断。


EX0=0,关闭外部中断0中断。


(2)中断优先级寄存器IP


        中断优先级寄存器在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别为B8H~BFH,IP寄存器用来设定各个中断源属于两级中断中的哪一级,该寄存器可以进行位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时IP全部被清为0,这个寄存器的定义如下表所示。

image.png

PS—串行口中断优先级控制位。


PS=1,串行口中断定义为高优先级中断。


PS=0,串行口中断定义为低优先级中断。


PT1—定时器/计数器1中断优先级控制位。


    PT1=1,定时器/计数器1中断定义为高优先级中断。


    PT1=0,定时器/计数器1中断定义为低优先级中断。


    PX1—外部中断1中断优先级控制位。


    PX1=1,外部中断1定义为高优先级中断。


    PX1=1,外部中断1定义为高优先级中断。


    PT0—定时器/计数器0中断优先级控制位。


    PT0=1,定时器/计数器0中断定义为高优先级中断。


    PT0=0,定时器/计数器0中断定义为低优先级中断。


    PX0—外部中断0中断优先级控制位。


    PX0=1,外部中断0定义为高优先级中断。


    PX0=1,外部中断0定义为高优先级中断。


        在51单片机中,高优先级中断能够打断低优先级中断以形成中断嵌套,同优先级中断之间,或低级对高级中断之间则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,在没有设置任何中断优先级的情况下,按照默认中断级别响应中断。在设置了中断优先级后,则按设置顺序确定响应的先后顺序。


        本文我们对中断的基本原理和相关寄存器进行了介绍,有关中断的具体用法我们将在后面的文章中进行介绍。

关键字:51单片机  中断功能  中断源 引用地址:51单片机(十四)—— 中断功能介绍

上一篇:51单片机(十五)—— 定时器模块介绍
下一篇:51单片机(十三)—— 看门狗功能测试

推荐阅读最新更新时间:2024-11-17 03:07

51单片机矩阵键盘的软硬件设计
  下面以51单片机综合学习系统为硬件平台,介绍矩阵式键盘的编程方法。具体功能为:按下其键后,在一位数码管上显示出键值。0到16个键分别对应显示0到F。   1、硬件原理      本实验可以直接在配套开发板上完成,电路图如下图所示。   根据电路原理图,键盘扫描方法是:行线P1O~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P1O-P13)全部输出低电平,此时读入列线数据,若列线全为高电平说明没有键接下,若有列线为低电平则调用延时程序来去除按键抖动。延时后再读入列线看是否有低电平,如果列线数据还是有低电平,说明确实有键接下,接下来便是确定键值。下面以第二行的S5键为例,看接下S5后我们应该怎么得到这个键值。当
[单片机]
<font color='red'>51单片机</font>矩阵键盘的软硬件设计
51单片机-实际LED硬件连接
1.三极管认识 假如我们的开发板的硬件连接有如下情况,我们需要点亮LED,需要怎么做? 先看左图,要想点亮LED,根据本章第一讲知识,只需“+5”与R1是短接状态即可,那么PNP型三极管就是起到被单片机IO端口控制是否允许此处短接的作用,也叫三极管是否导通。 如果单片机IO端口输出的是低电平(0V),此时我们可以直观的认为“+5”那端与单片机IO端口形成压差有电流通过,而电流流向正如箭头所示,则表明此时“+5”与R1是短接状态,三极管导通,灯就被点亮了。 那单片机IO端口输出的是高电平(5V)时,则没有形成压差也就产生不了电流,那么箭头不能代表此时有电流流向这个方向,所以“+5”与R1是断开状态,灯没
[单片机]
<font color='red'>51单片机</font>-实际LED硬件连接
51单片机时钟精度误差的解决
前几天用STC89C52单片机制作了一个电子时钟,经过一段时间的实验,发现时间精度存在误差,一分钟慢4秒左右。 这可了不得,十分钟就要慢40秒,一天下来不得慢半96分钟!!! 这个单片机晶振频率为11.0592mhz,和大部分时钟的晶振频率相同,应该没有问题。 后天考虑到源代码: 在定时器中断函数里: void t0(void) interrupt 1 using 0 { tcount++; if(tcount==4000) {tcount=0; second++; if(second==60) {second=0; minute++; if(minut
[单片机]
基于嵌入式的便携式信号发生及检测装置系统研究
    我们都知道,在很多领域内需要电子仪器长期在室外甚至许多恶劣的环境中进行工作,虽然在仪器设计之初针对其所适用的不同环境,在硬件方面有很多针对性的设计,尽管如此在室外环境中因自然或人为因素造成的仪器损坏的事件也会时有发生,由于缺少示波器、信号发生器等常用的电子仪器检测设备因而不便于对其进行实时的检测,只能停止工作将其带回有条件的实验室进行检测。     针对上述需求本文设计了一种采用广泛应用的嵌入式技术的便携式信号发生与测量装置,考虑到二者使用的不同情况,对信号发生和信号测量装置采用了独立的设计,在使用时既可以单独使用也可以组合使用,信号发生装置以AT89S51为核心通过DDS芯片AD9851产生任意可调的函数信号,信号测量装置
[电源管理]
基于嵌入式的便携式信号发生及检测装置系统研究
基于51单片机的室内多功能检测仪的研究
0 引言:   随着人们生活水平的提高,全装修住宅的日益扩展,其室内环境质量控制越来越引起社会各界的广泛关注。同时人们也需要安全、舒适的家居。现市场也有对室内环境的检测仪器,但存在有体积大、价格贵、功能少等原因,根据市场调查非常需要家居用室内安全、温湿度和室内甲醛的检测。本文设计的是家用集环境污染(甲醛)、安全、温度和湿度为一体的多功能便携式测试仪。   城市居民的气体燃料主要是液化石油、煤气和天然气。液化石油气的主要成分是丙烷、煤气的主要成分是CO和H2,天燃气主要成分是甲烷。   该设计主要包含两大部分功能,第一,空气质量包括温度、湿度、甲醛的检测。第二,室内安全测量包括CO、甲烷。 1 总体结构设计   总体结构图
[单片机]
基于<font color='red'>51单片机</font>的室内多<font color='red'>功能</font>检测仪的研究
【自学51单片机】1 -- 初步认识单片机和单片机基础知识介绍
初步认识单片机及其学习方法 和 单片机基础知识介绍 1、初识单片机 1.1 单片机是什么? 单片机是一种集成电路芯片,又称单片微控制器。是采用超大规模集成电路技术把CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。 1.2 单片机的用途 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。遥控器、车载电脑、空调、微波炉、电磁炉、电饭煲、电风扇、计算器、智能充电器、POS机、打印机、扫描仪、无人机、电控门等等,基本上需要插电的稍微有点功能的电器,都有单片机的存在。 1.3 单片机的种类 主流
[单片机]
【自学<font color='red'>51单片机</font>】1 -- 初步认识单片机和单片机基础知识介绍
89C51单片机怎么样?89C51单片机过时了吗
89C51单片机是一款8位单片机,最常用的是艾特梅尔产的AT89C51,我在上学时是用的最多的一款单片机芯片,现在来说它早已停产多年了。我认为尽管这样,作为一种性价比很高的芯片非常适合刚接触单片机的小白们学习,我认为在一些低端产品中还是能见到它的“踪影”,下面我来谈谈我的看法。 单片机作为一种控制类芯片,不管其性能是如何发展,现在仍然没有摆脱它的基本架构。我认为作为刚学单片机的新手来说这款芯片并没有过时,俗话说“万仗高楼平地起”,我们学单片机不仅仅是学单片机芯片本身的内部结构,我认为更重要的是学习单片机的一些硬件外设和软件部分。从这一方面来讲选一款经典的低端芯片来学习是我们的明智之举,一来可以增加我们学习的自信心,二来也可以节
[单片机]
51单片机识别四个独立按键是短按还是长按
这是一个可以识别四个独立按键是短按还是长按的参考程序,此程序已编译通过,初学者可以移植到51单片机上试试. /********************************************/ //FileName:识别四个独立按键是短按还是长按 //Function: 不同按键 短按或长按分别显示不同的LED //author:liu yong //QQ:545018331 //Date:2013/03/13 /********************************************/ #include PIC.H __CONFIG(0X3B31); #define uint8 unsigned
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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