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

    万次阅读 多人点赞 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单片机中断号对应的中断类型

    千次阅读 2019-08-07 08:36:08
    中断源 默认中断级别 外部中断0 INT0 最高 interrupt 0 定时器0中断 T0 ...

     

                      中断源                       默认中断级别 
         外部中断0          INT0                              最高interrupt 0 
         定时器0中断      T0                                 1interrupt 1 
         外部中断1          INT1                                 2interrupt 2 
         定时器1中断      T1                                 3interrupt 3 
         串口中断           TX/RX                                 4interrupt 4
      

    与中断系统相关的特殊寄存器:

    中断寄存器就是用于存贮中断状态的,包含是否启用中断或者是否发生中断。

    1)中断允许控制寄存器(IE)------------------ 控制各中断的开放和屏蔽

    2)中断优先级控制寄存器(IP)----------------设置各中断的优先级

    3)定时器/计数器控制寄存器(TCON)------定时器和外部中断的控制

    4)串行口控制寄存器(SCON)----------------串行中断的控制

     

    中断类型分为三类:

    1)T0、T1是2个定时器/计数器中断,由片内定时器提供;

    2)INT0、INT1是2个外部中断,由引脚P3.2和P3.2提供;

    3)RX、TX为串行口中断所用,由片内串口提供。

    串口初始化

    void uart_init(void)
    {
        T2CON=0x30;  //用定时器2做串口0的波特率发生器
        RCAP2H=(65536-22118400/baud_rate/32)/256;  
        RCAP2L=(65536-22118400/baud_rate/32)%256;
        SCON=0x50;   //串口0工作在模式3  M0=1 SM1=1  在11位异步收发模式  接收允许
        TR2=1;  //开启定时器2
        ES=0;   //关闭串口中断
        EA=1;   //打开总中断
    }
    
    void UART0(void) interrupt 4
    {
        ...
    }

    11.0592M晶振下    baut=f/{32*[65536-(RCAP2H,RCAP2L)]}
    fee0--1200   ff70--2400  ffb8--4800  ffdc---9600  ffee--19200   fff7--38400   fffa--57600  fffd--115200


    22.1184M晶振下
    fdc0--1200  fee0--2400  ff70--4800  ffb8---9600  ffdc---19200  ffee--38400  fff4--57600  fffa--115200

    定时器初始化

    void Timer_init(void)  //定时器0定时10ms
    {
        TMOD|=0x01;      //T0定时   16位   TR0控制
        TH0=0xb8;
        TL0=0x00;
        TR0=1;     //开启定时器
        ET0=1;     //T0中断开
        EA=1;      //打开总中断
    }
    
    void time_0(void) interrupt 1
    {
        TL0=0x00;
        TH0=0xb8;
    }  

    定时器计算方法:

    22118400M/12=1843200     每秒1843200次

    10ms=0.01s  =  18432次

    65536-18432=  47104 = B800

     

     

    展开全文
  • 变量的声明,就是告诉编译器,要在内存当中划出一块空间来存储该变量,而这个空间的大小跟变量的数据类型有关,比如char类型、int类型、long类型等等,不同的操作系统和编译器相应的数据类型......
  • 单片机中断

    2020-03-01 16:41:58
    单片机中,中断是指:对于CPU来说,当它在正常处理事件A时,突然发生了另一件事件B(中断发生)需要CPU去处理,这时CPU就会暂停处理事件A(中断响应),转而去处理事件B(中断服务)。当事件B处理完以后,再回到...

    一.中断的基本概念

    1.中断的概念:

    在单片机中,中断是指:对于CPU来说,当它在正常处理事件A时,突然发生了另一件事件B(中断发生)需要CPU去处理,这时CPU就会暂停处理事件A(中断响应),转而去处理事件B(中断服务)。当事件B处理完以后,再回到事件A原来中断的地方继续执行事件A(中断返回)。这一整个过程称为中断

    当中断过程B中,发生了另一个中断级别更高的中断事件C,则CPU又会中断当前的B转而去处理C,完毕后再回到B的断点继续处理。这称为中断的嵌套。中断的嵌套涉及到中断的优先级问题。

    2.中断源:

    请示CPU中断的源头称为中断源。中断源表示了单片机可以设置、发生中断的地方。51单片机内有3类基本的中断源:
    外部中断(INT0/1),定时中断(T0/1),串口中断(RXD,TXD)

    每个中断源都在P3口(附加功能)有相应的信号输入端:
    外部中断0(ITN0):P3.2
    外部中断1(INT1):P3.3
    定时中断0(T0):P3.4
    定时中断1(T1):P3.5
    串口中断0(RXD):P3.0
    串口中断1(TXD):P3.1

    二.中断相关的寄存器

    用来控制中断的开启与关闭、中断的请求、中断的条件与类型等等。若要使用中断,则要先配置相应的中断寄存器。这些寄存器及其各位都已经在reg52头文件中定义好了。

    1.中断允许寄存器(IE)

    在这里插入图片描述
    EX0(IE^0),外部中断 0 允许位;
    ET0(IE^1),定时/计数器 T0 中断允许位
    EX1(IE^2),外部中断1允许位;
    ET1(IE^3),定时/计数器 T1 中断允许位;
    ES(IE^4),串行口中断允许位;
    EA (IE^7), CPU 中断允许(总允许)位

    如果要用中断,首先要打开总中断位EA;需要使用哪一个中断,就让这个中断允许位=1。

    2.中断请求标志寄存器(TCON)

    低4位:外部中断请求标志位、外部中断触发条件
    高4位:定时中断请求标志位、定时中断是否启动
    在这里插入图片描述
    IT0(TCON^0),外部中断 0 触发方式控制位。用来控制外部中断的触发条件。
    当 IT0=0 时,为电平触发方式(低电平有效)。
    当 IT0=1 时,为边沿触发方式(下降沿有效)。

    IE0(TCON^1),外部中断 0 中断请求标志位。
    IT1(TCON^2),外部中断 1 触发方式控制位。
    IE1(TCON^3),外部中断 1 中断请求标志位。
    TR0(TCON^4),定时/计数器T0开启位。当TR0=1时,定时器开始工作。
    TF0(TCON^5),定时/计数器 T0 溢出中断请求标志位。
    TR1(TCON^6),定时/计数器T1开启位。当TR0=1时,定时器开始工作。
    TF1(TCON^7),定时/计数器 T1 溢出中断请求标志位。

    3.中断优先级寄存器(IP)

    在这里插入图片描述
    若将某一位设为1,则认为这一位的中断处于高优先级。
    优先级的考虑顺序:先考虑高低优先级别,再考虑序号排列。由此得到一整个优先级顺序。
    默认顺序:就是中断号的顺序

    三.中断的实际使用

    A.中断的3个条件:

    1.中断源有中断请求
    2.CPU允许中断(即EA)为1
    3.相应中断源的中断允许位为1

    以上3个条件缺一不可。当中断的发生不如意时,可以从这3点去进行考虑。

    B.如何使用中断:

    引用中断时,我们要考虑4个问题:
    1.为什么要用中断?
    2.你想要使用哪一个中断?它的中断号是什么?
    3.中断的触发条件是什么?
    4.中断以后做什么?

    C.中断服务程序的基本结构

    据上,我们可以编写程序来控制中断。这个程序最起码要包括三个模块

    1.中断配置函数
    设置需要的中断寄存器,来开启中断、选择它的类型和触发方式。
    由于所有的中断寄存器已经封装好,我们只需要给封装好的代号(如IE、EX0等)赋值。
    void Int0Init(){
    IT0=1;
    EX0=1;
    EA=1;
    }

    2.main函数
    主控,CPU执行的主程序。里面应该包含中断配置函数,以设置中断。
    当中断发生时,程序便从主程序马上跳出到中断服务函数。
    void main(){
    Int0Init();
    while(1); //主程序停在此处,等待中断的发生
    }

    3.中断服务函数
    写中断产生后要做什么。
    例:
    void int0() interrupt 0 using 1{
    //code
    }
    Int0是函数名,可以任取。
    Interrupt是一个关键字,后面的0是中断号(代表所使用的中断

    通常来说,在函数名中用int代表外部中断,Timer代表定时器中断

    附:中断号如下
    在这里插入图片描述

    四.中断的优点:

    随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O
    设备的数据传送问题,而且还具有如下优点:
    ①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;
    ②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;
    ③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

    展开全文
  • 51单片机中断 中断的含义: 个人理解,中断就是程序在执行的时候,要去干别的事情所以放下手头正执行的。先去处理新的事情这就是中断。 从生活讲就是我正在看视频,外卖来了,就把视频暂停了去取外卖。 程序上自己...

    51单片机中断
    中断的含义:
    个人理解,中断就是程序在执行的时候,要去干别的事情所以放下手头正执行的。先去处理新的事情这就是中断。
    从生活讲就是我正在看视频,外卖来了,就把视频暂停了去取外卖。
    程序上自己接触到的一些情况就是,主函数在执行while循环,这时中断来了,就进入中断程序里面。
    中断类型:
    中断分为外部中断、定时器中断和串口中断(自己还没咋研究懂)。
    外部中断主要就是常用的外部中断0和1,通过处理器提供给外部设备的中断,连接51单片机的P3.2和P3.3口。
    定时/计数器中断,主要是计数满了溢出时候触发的,一般是内部的中断(gate=1的时候和外部中断有关系)
    简单说这么多,明天通过个

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

    2016-07-18 15:55:00
     单片机有5个中断源,2个中断优先级,中断受两级控制:  1、CPU开总中断;  2、中断源开中断中断源:引起中断事件的类型。  5个中断源:  1、外部中断请求0,由INT0(P3.2)输入;  2、外部中断请求1,...
  • STC51单片机中断介绍

    2021-05-22 18:25:01
    关于51单片机的介绍1.1中断应用背景介绍1.2中断寄存器介绍1.中断示例1.1程序设计1.2讲解1.总结与心得 1.关于51单片机的介绍 总体介绍:51单片机是对所有兼容Intel 8051指令系统的单片机的统称。该系列单片机的始祖是...
  • 关于单片机中断详解

    2020-12-20 21:45:24
    比如小七我现在正在电脑前写帖子,突然老妈叫我帮她下楼拿点东西,于是我就收到了老妈给我的一个中断(可以叫做外部中断),当我去拿东西时,突然尿急(内部中断,尿袋快要撑爆了),这又是一个中断,!我们把引起中断...
  • PIC单片机中断服务程序

    千次阅读 2017-08-03 20:48:55
    其中的函数名“ISR”可以改成任意合法的字母或数字组合,但其入口参数和返回参数类型必须是“void”型,亦即没有入口参数和返回参数,且中间必须有一个关键词“interrupt”。  中断函数可以被放置在原程序的任意...
  • 单片机中断系统概述: 中断是指单片机的CPU在执行程序过程中,外部有一些事件变化,如数据采集结束,电平变化,定时器/计数器溢出等,要求CPU立即处理,这时CPU暂时停止当前的执行程序,转去处理中断请求,处理后,...
  • 32单片机 中断(六)

    2020-03-13 11:59:20
    中断:是指计算机运行过程中,出现...中断分为两种类型,一种是系统异常,体现在内核水平,一种是外部中断,体现在外设水平 typedef struct { __IO uint32_t ISER[8]; //中断使能寄存器 uint32_tRESERVED0[24]; ...
  • 在C51程序设计中,当函数定义时用了interruptm修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m的取值为0~...
  • 单片机外部中断中断嵌套

    千次阅读 2020-03-26 16:33:46
    51单片机的默认(此时的IP寄存器不做设置)中断优先级为: 外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断; 但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务...
  • 文章目录前言一、中断の概念1.术语解释2.F103系列单片机的中断及其管理器二、中断相关的寄存器...STM32F103系列单片机中断非常强大,每个外设都可以产生中断,F103 在内核水平上搭载了一个中断响应系统, 支持为数众
  • 单片机中断问题30例及解决办法

    千次阅读 2019-05-29 13:39:34
    1、单片机中断INT0为下降沿触发,当中断被触发后cpu执行中断程序,若本次中断的程序还未执行完INT0又来了一个相同的下降沿中断信号怎么办?cpu会怎么处理?若是定时器中断呢?串口中断呢?
  • 单片机_中断理解

    万次阅读 多人点赞 2019-02-23 22:28:38
    单片机_中断的理解 理论篇 引入—什么是中断? 通俗的说:比如我正在写博客,老板突然给我发一个任务,我暂停的写博客,转而把老板布置的任务完成之后,再继续写博客,这个过程就可以理解成中断。 引用:‘中断是指...
  • 单片机中断中可以使用宏定义代替函数,减小系统运行时间。 1.带参数宏定义的优点: 用带参数宏代替函数可以在中断中可以节省更多的运行时间,不至于中断时间过长造成其他的处理程序无法正常运行。宏展开不占运行...
  • 单片机中断 这个专栏,将直接从52系列单片机中断开始连载;对于中断以前的基础内容都很简单,一般看原理图就能解决,主要由于我最近看中断一遍还是觉得有些逻辑混乱,所以直接从中断开始。 中断概念 刚在写博客...
  • 51单片机外部中断

    千次阅读 2014-10-02 14:54:32
    1. 配置中断类型 IT-X 为1代表对应IO口下降沿中断为0代表对应IO口低电平中断 注意低电平中断进入之后如果IO口不取消低电平,单片机会不停地进中断 2.打开对应的中断开关 EX-X,为1打开中断为0关闭
  • 51单片机中断

    2020-12-24 22:42:39
    51中断源分为两种类型,一类是外部中断源,其中包括INT0和INT1;另一类是内部终端源,包括两个定时器/计数器(T0和T1)的溢出中断(TF0和TF1)和串行口的发送/接收中断(TI/RI)。 特殊功能寄存器 51单片机有4个专用...
  • 单片机中断使用注意事项

    千次阅读 2011-11-08 23:01:49
    单片机开发过程中,很多时候都需要用到中断,不管是内部的还是外部的,但是在使用中断的时候一定要注意到中断之后,其程序的运行状态。尤其是涉及时序的。  1、时序操作  比方说,程序中要对外部EEProm进行读写...
  • 单片机的外部中断使用例程,电平出发类型,C语言例程
  • 单片机中断程序详解(转)

    万次阅读 多人点赞 2017-07-29 10:21:41
    比如小七我现在正在电脑前写帖子,突然老妈叫我帮她下楼拿点东西,于是我就收到了老妈给我的一个中断(可以叫做外部中断),当我去拿东西时,突然尿急(内部中断,尿袋快要撑爆了),这又是一个中断,!我们把引起中断...
  • 51单片机中断系统

    2020-06-20 15:55:54
    51单片机之中断系统中断系统四种中断类型:外部中断:定时器/计数器T0、T1中断:串行口中断:定时器/计数器T2中断:中断入口:与中断相关的特殊功能寄存器:中断优先级:中断响应时间中断优先级及中断嵌套规则: ...
  • 51单片机中断心得整理

    千次阅读 2012-12-27 12:01:45
    如果在中断服务函数 ISR 中使用寄存器,那么必须处理好 using 的使用问题:  1、中断服务函数使用 using 指定与主函数不同的寄存器组(主函数一般使用 Register bank 0)。  2、中断优先级相同的ISR 可用 ...
  • 51单片机——中断

    2019-04-19 16:27:32
    中断源 称为终端类型单片机能够识别的中断种类和个数 mcs51 串口中断 两个外部中断 定时器中断 中断服务子函数 : 中断信号产生后,cpu 需要执行的函数 中断函数 必须烧写到固定地址 以便于终端产生...
  • 单片机里面有很多中断资源,例如外部中断、定时器中断、串口中断等,这些中断资源应当用于处理相应的紧急事件,而不是顺序执行的常规事件,所以在编写中断子程序的时候应当十分注意。 具体的事务处理语句不应放在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,235
精华内容 4,494
关键字:

单片机中断类型