精华内容
下载资源
问答
  • 本韩淑伟PIC单片机中断处理的子函数,高级终端地址为0x08H
  • 中断是个很重要的一个概念,在计算机组成原理中曾经讲过这一...中断处理过程 第一步:保护现场,将当前位置的PC地址压栈; 第二步:跳转到中断服务程序,执行中断服务程序; 第三步:恢复现场,将栈顶的值回送给PC; 第

    中断是个很重要的一个概念,在计算机组成原理中曾经讲过这一概念,对于嵌入式方向来说,也是一个非常重要的一个知识点,经常出现在笔试中。

    中断
    所谓中断就是:CPU在正常执行程序的过程中,由于内部/外部事件的触发或程序的预先安排引起CPU暂时中断当前正在运行的程序,而转去执行中断服务子程序,待中断服务子程序执行完毕后,CPU继续执行原来的程序,这一过程称为中断;

    中断处理过程

    第一步:保护现场,将当前位置的PC地址压栈;
    第二步:跳转到中断服务程序,执行中断服务程序;
    第三步:恢复现场,将栈顶的值回送给PC;
    第四步:跳转到被中断的位置开始执行下一个指令

    中断服务函数
    相对于正常子函数,中断服务函数有以下需要注意的地方:

    1.中断服务函数不能传入参数;
    2.中断服务函数不能有返回值;
    3.中断服务函数应该做到短小精悍;
    4.不要在中断函数中使用printf函数,会带来重入和性能问题。

    中断并不是程序一开始就判断好在那里发生,或者会在什么时候发生。中断发生完全时随机的,中断源连接到硬件,由硬件来产生触发中断,而总所周知,函数、函数内变量等大部分是存储在堆栈区,但是中断是随机产生的,且由硬件告知,那么去哪分配存储位置,自然一二是无法满足的。

    展开全文
  • 用定时器中断,单片机中断处理时间大于定时器定时时间会怎样? 如果是不同的中断类型是可以根据优先级嵌套,如果是同一中断类型(如题), 有三种结果:1、马上进入新的中断处理(中断嵌套) 2、等待中断处理完再...

    用定时器中断,单片机中断处理时间大于定时器定时时间会怎样?

    如果是不同的中断类型是可以根据优先级嵌套,如果是同一中断类型(如题),
    有三种结果:1、马上进入新的中断处理(中断嵌套) 2、等待中断处理完再进入新的中断处理 3、出错。

    单片机中断处理时间大于定时器定时时间,在下次中断时间到时,因为中断是同一类型、同一优先级,所以不会马上进入新的中断处理。
    而是在本次中断处理结束后,单片机又马上进入新的定时器中断函数,主函数中的语句可能会没有机会运行下去,会影响后面中断的实时性。所以答案为2。

    如果为了避免中断嵌套(同一优先级不会发生),在中断处理中人为的在进入中断时关中断,处理完中断后开中断,会影响后面中断的实时性。

    最安全的处理方式:中断处理时间越短越好,有什么事放外面处理。中断的初衷是为了提高系统实时性,中断处理太长,会影响同级的中断响应,其它中断谈何实时。

    附:解决高速大量数据的中断处理难题
    1.在中断中,只接收。或加上简单判断。 2、在主程序中处理。

     

     

    展开全文
  • 任务三单片机中断程序设计 西安航空职业技术学院 自动化教研室王曙霞 任务三单片机中断程序设计 中断处理过程 中断处理过程分为三个阶段:中断响应中断 处理和中断返回 中断响应 中断处理(又称中断服务) 三中断返回 ...
  • 单片机 中断

    万次阅读 多人点赞 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;//关蜂鸣器
    }
    展开全文
  • 单片机中断

    千次阅读 2018-12-17 22:09:11
    中断是指CPU在处理A事情时,发现B请求CPU立刻去处理中断发生),于是CPU去处理B(中断服务), 处理完B后又再次回到A被中断的地方,继续处理A(中断返回) 2、中断源 51单片机有五个中断源,分为外部 中断源(2...

                                     蓝桥杯单片机之中断

    1、中断含义及过程

    中断是指CPU在处理A事情时,发现B请求CPU立刻去处理(中断发生),于是CPU去处理B(中断服务), 处理完B后又再次回到A被中断的地方,继续处理A(中断返回)

    2、中断源

    51单片机有五个中断源,分为外部 中断源(2个),定时器/计数器 中断源(2个)、串行通信 中断(1个)

    每个中断源都有固定的入口地址和中断号,学习时要注意中断源与中断号的对应关系

    3、中断的处理函数

    (1)中断初始化函数

    (2)中断服务 函数     三个特点:<1>没有返回值也不能带参数

                                                           <2>函数后面跟一个关键字:interrupt

                                                            <3>在关键字interrupt后面跟一个中断号

    4、与中断 相关的寄存器

    一、TCON    低4位给外部中断请求源使用,高4位给内部中断系统寄存器

    外部请求源(第四位)

    <1>  IT0  :IT0 = 0时, INT0为低电平触发方式, IT0 = 1, INT0为负 跳变触发方式。总之是INT0触发方式控制位,可由软件进行置位和复位。

    <2>IE0 :    INT0中断请求标志位,当有外部中断请求时,该位就置1(硬件来完成),在CPU响应中断后,硬件将IE0又清0

    <3> IT1:   类似  不过是定时器1的相关位

    <4>IE1:   SAME

    内部 请求源(高四位)

    <1>TF0:定时/计数器T0溢出中断标记。当T0产生溢出时,TF0置位,当CPU响应中断后,硬件再把TF0复位

    <2>TR0 :T0的开关控制位, TR0 = 1  定时器计数器打开, TR0= 0   定时器计数器关闭

    注:TF1、TR1 与TF0 和TR0相似 。只是一个是定时器0的,一个是定时器1的

    二、SCON :低二位与串口中断相关

    TI:串行口发送中断

    RI :串行口接收中断

    三、IE    中断允许寄存器

    EA : 中断总控制位    EA =1 ,CPU开放所有中断   EA = 0, CPU禁止所有中断

    ES:     串行口中断控制位 ES =1, 允许串行口中断, ES= 0, 屏蔽串行口中断

    ET1:   定时/计数器TI中断控制位。ET1=1,允许T1中断;ET1=0,禁止T1中断

    EX1:外部中断1中断控制位。EX1=1,允许外部中断1中断;EX1=0禁止外部中断1中断

    ETO:定时/计数器T0中断控制位。ETO=1,允许T0中断;ETO=0,禁止T0中断

    EXO:外部中断0中断控制位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0断。

    四、IP  中断优先级寄存器

    执行时先将高级优先级执行后才会执行低的

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

    PT1:定时器1优先级控制位
    PX1:外部中断1优先级控制位
    PTO:定时器0优先级控制位
    PX0:外部中断0优先级控制位

    5、对于每一个外设,我们都需要写一个初始化函数和中断服务函数。

    下面分别展示外部中断   定时器\计数器中断    串行借口中断的部分代码

    6

    6、单片机补充:

    《1》三大外设:外部中断、定时/计数器、串行通信

    《2》sfr P0 = 0x80    和 P0 = 0x02的区别        前者用SFR来找了P0口的地址,为0X80, 后者是把0x02赋给P0口

    《3》INT0  和INT1是中断控制器里面的,称为外部中断申请输入端

    在INT0 或INT1 输入一个信号(低电平或者是下降沿),就可以使单片机临时停下正在执行的事情, 转去执行B事情

    《4》KEIL使用建工程:project---new uvison project---source group----add existing files to group.写完之后记得点魔术棒,生成Greate HEX Files

    在断电状态下单击下载,然后再上电  程序就自动下载到芯片了

    展开全文
  •  有些小伙伴喜欢在单片机中断里做任务,殊不知可能会因此遇到棘手的bug,然后查半天查不出个所以然。本文为了纠正这个不良习惯,对单片机中断进行阐述。  无中断时,单片机跑着主程序,当中断时,单片机进入中断...
  • 单片机中的中断系统对电子工程师来说是解决突发事件和多任务实时处理的方法,熟练掌握中断技术的应用是一个合格电子工程师必备的能力。  PIC与51系列单片机一个显著的区别就是:PIC只有一个中断入口地址(为04H)...
  • 单片机中断程序

    2019-11-15 11:45:54
    学习单片机过程 1、自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫...
  • 单片机中断过程

    千次阅读 2019-02-18 10:19:46
    1.根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1...5.把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。 6.中断返回,程序返回断点处继续执行。  ...
  • PIC单片机中断服务程序

    千次阅读 2017-08-03 20:48:55
    中断服务程序有一个特殊的定义方法: void interrupt ISR(void);其中的函数名“ISR”可以改成任意合法的字母或数字组合,但其入口参数和返回参数类型必须是“void”型,亦即没有入口参数和返回参数,且中间必须有一...
  • 在用keil4.60写51的定时器中断处理函数的时候,遇到了这么一个纠结的问题,就是我定义了一个全局变量temp,一旦触发定时器中断进入处理函数时将temp=123,在开中断前temp=888,我本用keil调试看看里边的变量变化情况...
  • 中断装置和中断处理程序统称为中断系统。 中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。这篇文章我们主要讲解...
  • 51单片机中断

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

    2020-08-28 19:55:13
    计算机在执行程序过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断程序。这种程序...
  • 中断是为单片机实时处理外部和内部随机机事情而设置的一项基本功能,中断功能的存在,极大的提高了单片机处理外部和内部事件的能力,目前几乎所有单片机都会配置的这一项基本功能,而中断功能的强弱也成为衡量一种...
  • 51单片机中断设置

    2021-01-19 18:28:36
    外部中断系统框图:  这些中断请求源的中断请求标志位...  1——表示有中断请求,CPU要响应中断请求,跳向中断服务程序,按优先级处理中断程序,跳入中断服务程序时,由硬件清0;  0——表示没有中断
  • 中断,是单片机非常重要的概念,能不能用好中断,是检验学习者单片机掌握程度的一个标志,但是一些地方写的比较抽象,给中断裹上神秘的外衣,好像很独特的样子,其实不然,事物发展都是连续的,没有一...
  • 51单片机中断

    2021-08-25 20:23:55
    2.51单片机中断源:外部中断0、定时计数器中断0、外部中断1、定时计数器中断1、串口中断。 3.与中断相关的寄存器:IE(中断允许控制寄存器)、TCON(控制寄存器)、IP(中断优先级控制寄存器) SCON(串行口控制寄存器)...
  • 单片机中断系统

    2021-08-29 10:55:31
    前言:中断系统是单片机非常重要的组成部分,是为了使单片机能够对外部或者内部随机发生的事件实时处理而设置的。...待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A,这一过程称为中.
  • 51单片机中断系统

    万次阅读 多人点赞 2018-12-11 20:04:08
    待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。    引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理...
  • 中断装置和中断处理程序统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。
  • 中断装置和中断处理程序统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。
  • c语言单片机中断服务程序

    千次阅读 2018-01-28 02:28:00
    中断服务程序 */ void timer0() interrupt 1 { count ++ ; if (count == 80 ) { P1 = 0 ; // 流水灯全亮 delay( 2000 ); count = 0 ; } } void int0() interrupt 0 { P1 = 0 ; // 流水...
  • 单片机中断程序(简单版),仅供参考:#include int0()interrupt 0 { P1; if(P1==0x00) P1=0x01; }

空空如也

空空如也

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

单片机的中断处理过程