精华内容
下载资源
问答
  • 51单片机中断响应

    2020-11-26 17:17:44
    51单片机中断响应 每条指令结束后,都自动检测是否有中断请求,如果有,且允许中断,则响应中断。 硬件把优先级状态标志置1 硬件把PC入栈 硬件清楚中断请求标志 如果需要,软件保护现场(寄存器内容入栈) 硬件调用...

    51单片机中断响应

    中断概念

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

    1. 每条指令结束后,都自动检测是否有中断请求,如果有,且允许中断,则响应中断。
    2. 硬件把优先级状态标志置1
    3. 硬件把PC入栈
    4. 硬件清楚中断请求标志
    5. 如果需要,软件保护现场(寄存器内容入栈)
    6. 硬件调用中断向量,进入中断服务
    7. 软件恢复现场(栈内容弹出到寄存器)
    8. 中断返回(端点地址弹回到PC中)
    展开全文
  • MCS-51单片机中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在定时的应用场合,必须...
  • 请问当两个同级别的中断向CPU提出申请的时候,CPU如何决断处理的先后?
  • 51单片机中断响应原理

    千次阅读 2019-11-12 11:26:35
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。。 2.中断系统结构 3.中断允许控制 ...

    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系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;...
  • 单片机边沿触发中断响应时刻的测量.pdf
  • 单片机 中断

    万次阅读 多人点赞 2018-05-30 23:03:30
    单片机 中断一、简述 中断,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。二、中断...

    单片机 中断

    一、简述

        中断,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。


    二、中断请求标志控制寄存器TCON


    三、中断请求标志控制寄存器SCON


    四、中断允许寄存器IE


    五、中断函数

    中断函数定义的格式为:
    函数类型 函数名 interrupt   n  using  m
    其中:
        interrupt 后面的n 是中断号。

        关键字using 后的m 是所选择的寄存器组,取值范围是0~3。

    using m这部分通常可以省略,由编译器自动选择一个寄存组。

    举例:

    void int0rupt() interrupt 0    
    {		
    	beep=0;//开蜂鸣器	
    	while(P3_2!=1);//当P3^2口一直是低电平时,就一直告警
    	beep=1;//关蜂鸣器
    }
    
    void 是函数类型表示空类型
    int0rupt是函数名

    interrupt 0中的0表示该函数是为外部中断0服务的处理函数(当外部申请中断0服务时调用此函数)

    六、完整例子

    文件打包:链接: https://pan.baidu.com/s/1Zuo1-bGvJV5YJU1Kq1Xh9w 密码: 195s

    1、效果:当按键按下时,蜂鸣器就会响,不松开就一直响,松开关闭。

        (主程序死循环,通过CPU中断可以暂时中断,先执行其他任务,然后再回来继续执行被中断的任务。例子中开启外部中断0,中断方式为下降沿触发,比如控制端口原来是高电平的,按下按钮使控制端口变为低电平,高电平到低电平有个下降过程,下降沿触发中断0,调用中断服务处理函数,蜂鸣器响。中断服务处理函数有个循环检测直到按钮释放才关闭蜂鸣器,退出中断服务处理函数,控制端口恢复为高电平。)

    2、Keil文件结构


    3、仿真电路


    4、alarm.c文件

    #include<reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    sbit P3_2=P3^2;//将P3^2定义为中断0控制口
    sbit beep=P3^3;//将P3^3定义为蜂鸣器控制口
    void main()
    {
    	EA=1;//开许总中断
      	EX0=1;//开外部中断0
     	IT0=0;//中断触发方式为低电平触发
    	while(1)  //主程序一直在死循环,外部中断可以暂时执行中断处理函数
    	{}
    }
    /**********************************************************/
    //函数名:int0rupt() interrupt 0
    //功能:外部中断0中断响应程序 
    //调用函数:
    //输入参数:
    //输出参数:
    //说明:当P3^2口为低电平时进入响应程序 
    /**********************************************************/
    void int0rupt() interrupt 0//当P3^2键口为低电平时
    {
    	beep=0;//开蜂鸣器
    	while(P3_2!=1);//当P3^2口置高检测,就是按钮不释放蜂鸣器就一直响
    	beep=1;//关蜂鸣器
    }
    展开全文
  • 51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;...
  • 单片机中断过程

    千次阅读 2019-02-18 10:19:46
    1.根据响应中断源的中断优先级, 使相应的优先级状态触发器置1; 2.把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; 3.执行硬件中断服务子程序调用; 4.清除相应的中断请求标志位(串行口中断请求...

    1.根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1;

    2.把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源;

    3.执行硬件中断服务子程序调用;

    4.清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);

    5.把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序

    6.中断返回,程序返回断点处继续执行。

     

    展开全文
  • 单片机中断

    千次阅读 2018-12-17 22:09:11
    1、中断含义及过程 中断是指CPU在处理A事情时,发现B请求CPU立刻去处理(中断发生),于是CPU去处理B(中断服务), 处理完B后又再次回到A被中断的地方,继续处理A(中断返回) 2、中断源 51单片机有五个中断源,...
  • 任务三单片机中断程序设计 西安航空职业技术学院 自动化教研室王曙霞 任务三单片机中断程序设计 中断处理过程 中断处理过程分为三个阶段:中断响应中断 处理和中断返回 中断响应 中断处理(又称中断服务) 三中断返回 ...
  • 51单片机中断

    2021-10-02 18:09:52
    51单片机中断机制 单片机的中断简介 52单片机一个有6个中断源,它们的符合,名称以及触发方式如下:
  • 中断响应过程 要求  掌握: 中断控制的专用寄存器 中断响应过程  了解: 中断的概念 单片机的单步执行方式 5.1 中断的基本概念 5.2 MCS-51 单片机的中断系统 5.3 中断系统的应用举例
  • 51单片机中断系统

    万次阅读 多人点赞 2018-12-11 20:04:08
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。    引起CPU中断的根源,称为中断源。...
  • 51单片机中断设置

    2021-01-19 18:28:36
    外部中断系统框图:  这些中断请求源的中断请求标志位...  1——表示有中断请求,CPU要响应中断请求,跳向中断服务程序,按优先级处理中断程序,跳入中断服务程序时,由硬件清0;  0——表示没有中断
  • 单片机中断系统

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

    千次阅读 多人点赞 2021-01-27 23:59:10
    51单片机中断51单片机中断原理中断的概念:中断作用中断源及相关寄存器中断源及优先级定时器/计数器控制寄存器 TCON中断允许寄存器 IE中断优先寄存器 IP工作方式寄存器TMOD定时器初值寄存器THx 和 TLx计数器初值的...
  • 6单片机中断概念.ppt

    2020-02-15 19:55:44
    425 中断计数流水灯硬件电路设计 图410 中断计数流水灯电路 下一页 上一页 单片微型计算机原理与接口技术 51单片机中断系统 浙江大学电气学院 彭勇刚 单片微机中断系统 中断系统概念 中断响应过程 中断检测 中断向量...
  • 52单片机中断

    2021-02-02 15:03:00
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程被称为中断。 概念可能不好理解,举个例子:假如你是个...
  • CPU在正常执行程序的过程中,由于内部/外部事件的触发或程序的预先安排引起CPU暂时中断当前正在运行的程序,而转去执行中断服务子程序,待中断服务子程序执行完毕后,CPU继续执行原来的程序,这一过程称为中断;...
  • 单片机中断总结

    千次阅读 2016-06-26 11:09:12
    中断响应条件 1.中断源有中断请求(T0,T1) 2.T0,T1中断的中断允许位为1 3.CPU开中断 (EA=1) 以上的三个条件同时满足时,CPU才有可能响应中断 ############################################ EX0(IE.0)...
  • 基于单片机c51的中断功能,通过查询定时响应中断
  • 基于单片机c51的中断功能,通过查询计数响应中断
  • 单片机中断讲解

    2020-07-19 20:48:20
    一、什么是中断 1.概念: 计算机执行某程序时,发生了紧急事件或着特殊的请求,CPU会暂停...然后你回答:“好的,我现在就来”这就是中断响应。接着你停止吃饭下楼去取快递,这就是中断处理。取完快递,你再回来接着吃
  • 51单片机中断学习

    2020-01-21 10:28:24
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 二、中断源 在51单片机中有5个中断源 中断号 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,493
精华内容 3,797
关键字:

单片机中断响应过程