精华内容
下载资源
问答
  • 单片机中断响应的条件
    2020-11-26 17:17:44

    51单片机中断响应

    中断概念

    在这里插入图片描述# 响应过程

    1. 每条指令结束后,都自动检测是否有中断请求,如果有,且允许中断,则响应中断。
    2. 硬件把优先级状态标志置1
    3. 硬件把PC入栈
    4. 硬件清楚中断请求标志
    5. 如果需要,软件保护现场(寄存器内容入栈)
    6. 硬件调用中断向量,进入中断服务
    7. 软件恢复现场(栈内容弹出到寄存器)
    8. 中断返回(端点地址弹回到PC中)
    更多相关内容
  • 描述讲到这儿,我们依然对于计算机响应中断感到神奇,我们人可以响应外界的事件,是因为我们有多种“传感器“――眼、耳可以接受不同的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在...

    描述

    讲到这儿,我们依然对于计算机响应中断感到神奇,我们人可以响应外界的事件,是因为我们有多种“传感器“――眼、耳可以接受不同的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。

    ea22dc1562cc894cfc0fbca3d8c96dff.png

    了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:

    1、CPU正在处理一个同级或更高级别的中断请求。

    2、现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。

    3、当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。

    打开APP阅读更多精彩内容

    点击阅读全文

    展开全文
  • MCS-51单片机中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在定时的应用场合,必须...
  • 51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;...
  • 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。
  • 单片机】4.4 响应中断请求的条件

    千次阅读 2021-12-01 21:07:05
    中断响应条件中断响应的过程,中断响应被封锁的情况

    中断响应的条件

    • 中断请求被响应,必须满足以下必要条件
      (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1
      (2)该中断源发出中断请求,即对应的中断请求标志为“1”
      (3)该中断源的中断允许位为1,即该中断被允许。
      (4)无同级更高级中断正在被服务。
    • 当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。

    中断响应的过程

    • 首先由硬件自动生成一条长调用指令LCALL addr16”。就是程序存储区中相应的中断入口地址
    • 例如,对于外部中断1的响应,硬件自动生成的长调用指令为
    				LCALL    0013H
    
    • 首先将程序计数器PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向响应中断请求的中断入口地址。
    • 各中断源服务程序的入口地址(也称中断矢量)是固定的 ,如表4-2所示。
    • 两个中断入口间只相隔8字节,难以安放一个完整的中断服务程序。因此,通常在中断入口地址处放置一条无条件转移指令,使程序执行转向中断服务程序入口。

    中断响应被封锁的情况

    • 中断响应是有条件的,当遇到下列三种情况之一时,中断响应被封锁:
    1. CPU正在处理同级或更高优先级的中断。
    2. 所查询的机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性
    3. 正在执行的指令是RETI或是访问IE或IP的指令。因为按照AT89S52中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。
    • 如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。
    展开全文
  • 引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统...
  • 51单片机中断设置

    2021-01-19 18:28:36
    外部中断系统框图:  这些中断请求源的中断请求标志位...  1——表示有中断请求,CPU要响应中断请求,跳向中断服务程序,按优先级处理中断程序,跳入中断服务程序时,由硬件清0;  0——表示没有中断
  • 51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;...
  • 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断...这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要
  • C28x DSP内核总计有16个中断线,其中包括2个不可屏蔽中断(RESET和NMI)与14个可屏蔽中断。可屏蔽中断通过相应的中断使能寄存器使能或禁止产生的中断,如图1所示。  图1 281x处理器中断源及其连接关系  在F281...
  • 51单片机中断响应原理

    千次阅读 2019-11-12 11:26:35
    1.中断概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕...5.中断响应条件 6.实验程序: #i...

    1.中断概念

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

    2.中断系统结构

    引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统。

    89C51/52的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套 。

    • (P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
    • (P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
    •  TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
    •  TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
    •  RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

    3.中断允许控制寄存器---IE

    CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的

    • EX0(IE.0),外部中断0允许位;
    • ET0(IE.1),定时/计数器T0中断允许位;
    • EX1(IE.2),外部中断0允许位;
    • ET1(IE.3),定时/计数器T1中断允许位;
    • ES(IE.4),串行口中断允许位;
    • EA (IE.7), CPU中断允许(总允许)位。

    4.定时器控制寄存器---TCON

    TCON的中断标志:中断标志位就是提供给用户查询的事件及区分中断事件

    • 51串口中断接受与发送时同一个中断入口,需要串口中断标记位RI与TI区分时发送中断还是接收中断。
    • 当中断不开启,而使用查询方式,这就可以使用中断标记位进行判断是否有相关事件发生。
    • 当开启中断时,每执行一条汇编指令系统会根据这个标志位进行是否进入中断处理。

    通俗的讲:中断标志置1的话,cpu会记录这个中断标志位,然后进入中断处理

    • TR0(TR1)——定时器运行控制位

                       当TR0(TR1)=0  停止定时器/计数器工作

                       当TR0(TR1)=1  启动定时器/计数器工作

    • IE0(IE1)——外中断请求标志位

                      当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。

    • IT0(IT1)——外中断请求信号方式控制位

                       当IT0(IT1)=1 脉冲方式(后沿负跳有效)

                       当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。

    • TF0(TF1)——计数溢出标志位

                      当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位  来使用;采用查询方式时,作查询状态位来使用。

    5.中断优先级寄存器--IP

    IP 这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是 0,当把某一位设置为 1 的时候,这一位的优先级就比其它位的优先级高了。

    • 抢占优先级

    比如设置了 PT0位为 1 后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器 T0 发生中断,作为更高的优先级,程序马上就会跑到 T0 的中断程序中来执行。

    反过来,当单片机正在 T0中断程序中执行时,如果有其它中断发生了,还是会继续执行 T0 中断程序,直到把 T0 中的中断程序执行完毕以后,才会去执行其它中断程序。

    当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占

    所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。

    • 固有优先级

    那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在下图的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。

    从表中可以看到一共有 1~6 共 6 级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?

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

    6.定时器模式寄存器---TMOD

    工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

    • GATE是门控位

               GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;

               GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。

    • C/T :定时/计数模式选择位

              C/T =0为定时模式;

              C/T =1为计数模式。

    •  M1M0:工作方式设置位

             定时/计数器有四种工作方式

    7.中断源

    记住区分中断号

    7.中断响应条件

    • 中断源有中断请求;
    •  此中断源的中断允许位为1;
    •  CPU开中断(即EA=1)。

    8.举例说明(外部中断0):

    #include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器

    typedef unsigned int u16;      //对数据类型进行声明定义
    typedef unsigned char u8;

    sbit k3=P3^2;  //定义按键K3
    sbit led=P2^0;     //定义P20口是led

    /*******************************************************************************
    * 函 数 名         : delay
    * 函数功能           : 延时函数,i=1时,大约延时10us
    *******************************************************************************/
    void delay(u16 i)
    {
        while(i--);    
    }

    /*******************************************************************************
    * 函 数 名         : Int1Init()
    * 函数功能           : 设置外部中断1
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Int0Init()
    {
        //设置INT0
        IT0=1;//跳变沿出发方式(下降沿)---中断请求
        EX0=1;//打开INT0的中断允许。     ---外部中断允许
        EA=1;//打开总中断                         ----总中断
    }
    void main()
    {    
        Int0Init();  //    设置外部中断0
        while(1);        
    }

    /*******************************************************************************
    * 函 数 名         : Int0()    interrupt 0
    * 函数功能           : 外部中断0的中断函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/

    void Int0()    interrupt 0        //外部中断0的中断函数 ;0为外部中断0的中断号
    {
        delay(1000);     //延时消抖
        if(k3==0)
        {
            led=~led;
        }
    }

    9.举例说明(定时器1实验 )

    **************************************************************************************
    *                      定时器1实验                                                  *
    实现现象:下载程序后数码管最后一位间隔一秒循环显示0-F。使用单片机内部定时器可以实现准确延时。
    注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。                                                                                  
    ***************************************************************************************/

    #include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器

    typedef unsigned int u16;      //对数据类型进行声明定义
    typedef unsigned char u8;

    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;

    u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
    u8 n=0;
    /*******************************************************************************
    * 函 数 名         : Timer1Init
    * 函数功能           : 定时器1初始化
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Timer1Init()
    {
        TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。

    //0x10=0001 0000,所以是T1模式,工作方式1

        TH1=0XFC;    //给定时器赋初值,定时1ms  (65536-1000=64536)
        TL1=0X18;    
        ET1=1;//打开定时器1中断允许
        EA=1;//打开总中断
        TR1=1;//打开定时器            
    }

    /*******************************************************************************
    * 函 数 名       : main
    * 函数功能         : 主函数
    * 输    入       : 无
    * 输    出         : 无
    *******************************************************************************/
    void main()
    {    
        LSA=0;
        LSB=0;
        LSC=0;
        Timer1Init();  //定时器1初始化
        while(1);        
    }

    /*******************************************************************************
    * 函 数 名         : void Timer1() interrupt 3
    * 函数功能           : 定时器0中断函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Timer1() interrupt 3
    {
        static u16 i;
        TH1=0XFC;    //给定时器赋初值,定时1ms
        TL1=0X18;
        i++;
        if(i==1000)
        {
            i=0;
            P0=smgduan[n++];
            if(n==16)n=0;    
        }    
    }

     

     

    展开全文
  • 51单片机中断

    千次阅读 2021-08-25 20:23:55
    2.51单片机中断源:外部中断0、定时计数器中断0、外部中断1、定时计数器中断1、串口中断。 3.与中断相关的寄存器:IE(中断允许控制寄存器)、TCON(控制寄存器)、IP(中断优先级控制寄存器) SCON(串行口控制寄存器)...
  • 中断是为单片机实时处理外部和内部随机机事情而设置的一项基本功能,中断功能的存在,极大的提高了单片机处理外部和内部事件的能力,目前几乎所有单片机都会配置的这一项基本功能,而中断功能的强弱也成为衡量一种...
  • 中断装置和中断处理程序统称为中断系统。 中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了...这篇文章我们主要讲解单片机中断
  • 单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来...
  • 摘要 通过分析51单片机中断I/O入口的内部结构,解释了外中断不能被正常响应的原因,并提出了解决该问题的方法。 关键词:单片机,外中断,干扰 在长期使用51单片机的过程中,我们发现单片机在工业生产现场等...
  • 在系统中,控制器的作用就是控制整个系统实时、有序地按照程序的要求运行,而DSP只有一个CPU,所以只有L个进程,当外部设各要求DSP控制时,就采用中断的方式,DSP根据中断的优先级,通过响应中断并执行中断服务子...
  • 在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。
  • 中断源 (1)外部中断0请求,由P3.2脚输入。通过IT0脚(TCON.0)来决定是低电平有效还是下跳变有效。一旦输入信号有效,就向CPU申请中断,并建立IE0标志。 (2)外部中断1请求,由P3.3脚输入。通过IT1脚TCON.2)来...
  • 为了解决MCS-51系列单片机只能由IP寄存器设定两级优先级的问题,文中给出了利用软件对中断优先级进行扩展的方法,同时给出了高于两个优先级的多优先级软件扩展程序。
  • 基于单片机c51的中断功能,通过查询定时响应中断
  • 由于CPU的运行速度非常高,而各个外围设备模块的工作速度却非常低,况且这些外围设备模块也不是频繁地要求CPU对其服务。因此,通常采取一种让众多外围设备模块共享1个CPU,并且能够及时得到CPU服务的调度方法——中断
  • 单片机边沿触发中断响应时刻的测量.pdf
  • 摘要:为了解决MCS-51系列单片机只能由IP寄存器设定两级优先级的问题,文中给出了利用软件对中断优先级进行扩展的方法,同时给出了高于两个优先级的多优先级软件扩展程序。 关键词:单片机中断;优先级;寄存器1...
  • PIC单片机中断总结

    2020-08-04 04:06:01
    与51或者其他系列的单片机相比,PIC 单片机中断机制有其特殊之处,针对我们一些初学者存在的一些问题和疑惑,我在此做一个个人总结,不当的地方,请站友们指正。
  • 单片机中断系统

    2021-08-29 10:55:31
    前言:中断系统是单片机非常重要的组成部分,是为了使单片机...CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A,这一过程称为中.
  • 51单片机边沿触发中断响应时刻的测量.pdf
  • 单片机中断

    万次阅读 多人点赞 2021-01-07 19:26:31
    中断响应过程:由中断管理系统处理突发事件的过程; 中断源:中断管理系统能够处理的突发事件; 中断请求:中断源向CPU提出的处理请求; 中断函数:针对中断源和中断请求提供的服务函数; 中断嵌套:在中断服务过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,194
精华内容 7,277
关键字:

单片机中断响应的条件