51单片机(九):中断

这篇具有很好参考价值的文章主要介绍了51单片机(九):中断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、“中断”与定时器的关系

        前面我们学习过了定时器,实际上定时器的一般用法都是采取中断的方式进行实现的。需要明确的是,定时器和中断不是一回事,定时器是单片机模块的一个资源,确确实实存在的一个模块,而中断是单片机中的一种运行机制。在单片机系统中,中断机制允许处理器在执行主程序的过程中,暂停当前任务,转去处理中断事件。处理完毕后,再返回原来暂停的地方继续执行任务。这种机制可以实现实时响应,提高系统的实时性。

二、“中断”相关概念

1. 中断:是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件,待突发事件处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

        中断源:中断管理系统能够处理的突发事件。

        中断请求:中断源向CPU提出的处理请求。

        中断响应:由中断管理系统处理突发事件的过程。

        中断函数:针对中断源和中断请求提供的服务函数。

        中断嵌套:在中断服务过程中执行更高级别的中断服务。

2. 中断标志位与中断使能位

        ① 中断标志位:中断标志位是用于表示中断请求的寄存器位。当中断源产生中断请求时,相应的中断标志位会被设置为 1。中断处理程序通过检查这些标志位来确定哪个中断源产生了中断,然后执行相应的中断服务程序。

        ② 中断使能(允许)位:中断使能位是用于控制中断请求是否被响应的寄存器位。当中断使能位为 1 时,中断请求会被响应并产生中断标志位;当中断使能位为 0 时,中断请求不会被响应。

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

3. 中断源

        ① 外部中断:中断源信号由外部引脚P3.2和P3.3输入。

        ② 内部中断:中断信号由内部单元产生。

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

4. 中断号

        "中断号"是系统分配给每个中断源的代号,用于识别和处理不同类型的中断事件。中断号的主要作用是在中断处理过程中,CPU通过中断号来识别不同的中断源,以便采取适当的处理措施。在采用向量中断方式的中断系统中,CPU会根据中断号找到对应的中断服务程序的入口地址,实现程序的转移。这样,每个中断源都可以独立地触发中断事件,并且CPU可以准确地识别和处理这些事件。

        简而言之,“中断服务程序”与“中断号”之间的关系,就像是“子程序”与“函数名”之间的关系。在执行“子程序”时,CPU根据“函数名”进行跳转;在执行“中断服务程序”时,CPU根据“中断号”查找相应的中断服务程序。

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

        上述的中断函数名可进行自定义,只要符合函数的命名规则即可。

三、与“中断”相关的寄存器

        串行控制寄存器SCON会在后面的“串口”部分进行讲解。

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

1. 定时器控制寄存器TCON的IE1、IT1、IE0、IT0位寄存器

        IE1:外部中断1(INT1/P3.3)的中断请求标志位。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由硬件清“0”。(IE:Interrupt Enable)
        IT1:外部中断1触发方式控制位。IT1=0时,外部中断1为低电平触发方式,当INT1(P3.3)输入低电平时,将IE1置1 。当IT1=1时,外部中断1为下降沿触发方式,当INT1(P3.3)输入信号出现下降沿时,将IE1置1。(IT:Interrupt Type)

        IE0:外部中断0(INT0/P3.2)的中断请求标志位。IE0=1,外部中断向CPU请求中断,当CPU响应该中断时由硬件清“0”。
        IT0:外部中断0触发方式控制位。IT0=0时,外部中断0为低电平触发方式,当INT0(P3.2)输入低电平时,将IE0置1 。当IT0=1时,外部中断0为下降沿触发方式,当INT0(P3.2)输入信号出现下降沿时,将IE0置1。

        当两外部中断采用低电平触发的方式时,外部中断源(输入到INT0/1)必须一直保持低电平有效,直到该中断被CPU 响应,同时在该中断服务程序执行完之前,外部中断源必须被清除(P3.2/P3.3要变为高电平),否则将产生另一次中断。(后面会在“定时器&中断的应用”中,会对“外部中断的触发方式”进行详细介绍。)

2. 中断使能(允许)寄存器IE (IE:Interrupt Enable) —— 可位寻址

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

        EA:CPU的总中断允许控制位,。EA=0,CPU屏蔽所有的中断申请;EA=1,CPU开放中断,各中断的产生由各自的允许位决定。EA的作用是使中断允许形成两级控制,即各中断源首先受EA控制,其次还受各中断源自己的中断允许位控制。
        ET2:定时/计数器2溢出中断允许位(8052用)。ET2=1,允许T2中断;ET2=0,禁止T2中断。
        ES:串行口1中断允许位。ES=1,允许串行口1中断;ES=0,禁止串行口1中断。
        ET1:定时/计数器T1的溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
        EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
        ET0:定时/计数器T0的溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
        EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。

EA:Enable All        ET:Enable Timer        ES:Enable Serial        EX:Enable External

3. 中断优先级寄存器IP (IP:Interrupt Priority) —— 可位寻址

外部中断请求标志位,51单片机,51单片机,嵌入式硬件,单片机

        PT2:定时/计数器T2的中断优先级控制位。只用于52子系列。
        PS:串口中断优先级控制位。PS=1,串行口中断定义为高优先级中断;PS=0,串行口中断定义为低优先级中断。
        PT1:定时/计数器T1的中断优先级控制位。PT1=1,定时/计数器T1定义为高优先级中断;PT1=0,定时/计数器T1定义为低优先级中断。
        PX1:外部中断1的中断优先级控制位。PX1=1,外部中断1定义为高优先级中断;PX1=0,外部中断1定义为低优先级中断。
        PT0:定时/计数器T0的中断优先级控制位。PT0=1,定时/计数器 T0定义为高优先级中断;PTO=0,定时/计数器T0定义为低优先级中断。
        PX0:外部中断0的中断优先级控制位。PX0=1,外部中断0定义为高优先级中断;PX0=0,外部中断0定义为低优先级中断。

PS:Priority Serial        PT:Priority Timer        PX:Priority External

四、中断优先级

        1. 抢占优先级:

        上面的IP寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当把某一位设置为1的时候,这一位的优先级就比其他位的优先级高了。比如设置了PT0位为1后,当单片机在主循环或者任何其他中断程序中执行时,一旦定时器T0发生中断,作为更高的优先级,程序马上就会跑到T0的中断程序中来执行。反过来,当单片机正在T0中断程序中执行时,如果有其他中断发生了,还是会继续执行T0中断程序,直到把T0中的中断程序执行完后,才会去执行其他中断程序。标志位被置1的中断源(抢占优先级),其优先级还按照固有优先级进行排序。

        当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级中断后,再返回处理低优先级中断,这个过程就称为中断嵌套,也称为抢占。所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。

        2. 固有优先级:

        在上面“中断相关概念”的介绍中,已经给出了中断的默认优先级(固有优先级)。注意,在中断优先级的编号中,一般都是数字越小优先级越高。从表中可以看到一共有1~5共5级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么高优先级的中断也只能等到低优先级中断执行完后才能得到响应。(此处提到的“高优先级”,指固有优先级中的高优先级。)

        3. 既然固有优先级不能抢占,那么这个优先级有什么用呢?

        多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见得多了,那就是出于某种原因暂时关闭了总中断,即EA=0,执行完一段代码后又重新使能了总中断,即 EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同一时间请求响应,很明显,这时也必需有个先后顺序才行,这就是非抢占优先级的作用,谁优先级最高先响应谁,然后按编号排队,依次得到响应。

中断优先级处理的原则:

        ① CPU同时接收到几个中断时,首先响应级别最高的中断请求。

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

        ③ 正在进行的低优先级中断服务,能被高优先级中断请求所中断。文章来源地址https://www.toymoban.com/news/detail-763300.html

到了这里,关于51单片机(九):中断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机——中断系统之外部中断实验,小白讲解,相互学习

     中断介绍         中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学些单片机必须要掌握的。         为了更容易的理解中断概

    2024年02月07日
    浏览(47)
  • 题解:按钮加减计数器设计(单片机C51)(外部中断)

               需求 :使用 4位共阴极段码表及共阳极数码管 ,通过 外部中断 方式,实现 两个按钮 分配加1、减1功能 。         今天我就来 讲解 一下 这道题 : 目录 1.代码 1.1定义头文件 1.2定义延时函数(毫秒) 1.3定义主函数 1.4定义0~15共阴极数码管字符码 1.5定义中断

    2024年02月02日
    浏览(54)
  • 关于51单片机的外部中断INT0和INT1

    问题:外部中断到底如何正确配置? 解决: 第一步:看明白外部中断工作的内部框图 直接看第一个INT0,这就是外部中断0,从左往右,一共需要配置三个地方,分别是IT0,这里可以填写0/1,区别就是触发方式的差异,0的时候是低电平触发,1的时候是下降沿触发;再次是EX

    2024年02月16日
    浏览(54)
  • 51单片机实验3-中断控制的LED灯(单一外部中断控制LED灯,两个外部中断控制LED灯,交通管制路口)

    1、编写程序通过单一外部中断控制LED灯,每按一次开关,中断服务程序中,低4位led和高4位led交替闪烁5次; 2、编写程序利用两个外部中断控制LED灯。上电后8个led以流水灯方式点亮间隔100ms,K1按下,流水灯反向显示1次间隔50ms;按下K2,8个led同时闪烁3次,间隔50ms。 电路连接

    2024年02月08日
    浏览(47)
  • 单片机学习 11-中断系统(定时器中断+外部中断)

    ​ 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。很多初学者被困在中断中,学了很久仍然不知道中断究竟是

    2024年02月05日
    浏览(47)
  • 单片机学习笔记---红外遥控(外部中断)

    目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工,异步 红外LED波长:940nm 通信协议标准:NEC标

    2024年02月22日
    浏览(38)
  • 51单片机中断

    1、什么是中断? CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 中断触

    2024年01月21日
    浏览(47)
  • 51单片机——中断

    中断系统的设置,是为了让CPU能对外界紧急事件进行实时处理 中断的过程是,当中断请求源发出中断请求时,CPU响应中断后,CPU先暂停当时正在执行的主程序,转而去处理中断服务程序,处理完后继续原来的工作 微型机一般允许多个中断源,当几个中断源同时发出中断时,

    2023年04月15日
    浏览(84)
  • 51单片机(九):中断

    一、“中断”与定时器的关系         前面我们学习过了定时器,实际上 定时器的一般用法都是采取中断的方式进行实现的 。需要明确的是,定时器和中断不是一回事,定时器是单片机模块的一个资源,确确实实存在的一个模块,而中断是单片机中的一种运行机制。 在单片

    2024年02月04日
    浏览(40)
  • 51单片机中断系统

    我们先来举一个生活事例: 你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。 对于

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包