文章目录

  • 1. 什么是中断
    • 1.1 中断的概念
    • 1.2 中断源
      • 1.2.1 中断源的种类
  • 2. 中断寄存器
    • 2.1 TCON寄存器
    • 2.2 SCON寄存器
    • 2.3 IE寄存器
    • 2.4 IP寄存器
  • 3. 中断处理流程
    • 3.1 定时器中断实操
    • 3.2 外部中断实操
    • 3.3 思考题:
  • 4. 最重要的事

1. 什么是中断

1.1 中断的概念

中断是指中央处理器CPU正在处理某件事情的时候,外部发生了某一事件(如定时器计时已到),请求CPU迅速去处理,CPU暂停当前的工作,转去处理所发生的事件,处理完以后,再回到原来被中断的地方,继续原来的工作。实现这种功能的部件称为中断系统。它由4个与中断有关的特殊功能寄存器(TCON、SCON)中断允许控制寄存器IE中断顺序查询逻辑等组成。

1.2 中断源

我们将发起中断申请的设备,称为中断源。

1.2.1 中断源的种类

根据中断源的不同,可分为2个外部中断源,3个内部中断源:

  • /INT0:外部中断0,中断请求信号由P3.2端口线引入,低电平或下跳沿引起。
  • /INT1:外部中断1,中断请求信号由P3.3端口线引入,低电平或下跳沿引起。
  • T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入,由T0计满回零引起。
  • T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入,由T1计满回零引起。
  • 串行中断:包括串行接收中断RI和串行发送中断TI。

2. 中断寄存器

单片机中主要包含四类特殊的寄存器对中断进行控制:

  • TCON:定时/计数器控制寄存器
  • SCON:串行口控制寄存器
  • IE:中断允许寄存器
  • IP:中断优先级寄存器

2.1 TCON寄存器

每个中断源对应一个中断标志位,当某个中断源有中断请求时,相应的中断标志位置1,各中断源的中断标志位在TCON和SCON中,具体如下表所示:

说明:

  • 标志位IE0=1时,表示外部中断/INT0提出了中断请求,如果IE0=0,则没有中断请求;
  • 标志位IE1=1时,表示外部中断/INT1提出了中断请求;
  • 标志位TF0=1时,表示定时器/计数器T0提出了中断请求;
  • 标志位TF1=1时,表示定时器/计数器T1提出了中断请求。
  • IT0:外部中断0触发方式控制位。
    • 当IT0=0时,为电平触发方式(低电平有效);
    • 当IT0=1时,为边沿触发方式(下降沿有效)。
  • IT1(TCON.2):外部中断1触发方式控制位,其作用和IT0类似。
  • TR0(TCON.4):定时/计数器T0运行控制位。
    当TR0=1,启动定时/计数器T0;反之,停止定时/计数器T0。
  • TR1(TCON.6):定时/计数器T1运行控制位,其作用和TR0相同。

2.2 SCON寄存器


这里补充一下串口通信的四种模式,方便后面理解各个标志位的作用:

说明:

  • TI:串行口发送中断标志位,当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI,即TI=1。 CPU响应中断时,不能自动清除TI,TI必须由软件清除。
  • RI:串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI,即RI=1,RI也必须由软件清除。
  • SM0、SM1:串口工作方式选择位,用于控制串口通信模式。
  • SM2:多机通信控制位,主要用于方式2和方式3。
  • REN:允许串行接收位。由软件置REN=1,则启动串行口接收数据;若置REN=0,则禁止接收。
  • TB8:在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用,例如:作为数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用。
  • RB8:在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。

2.3 IE寄存器

中断系统中所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的,IE可进行位寻址。中断允许寄存器IE对中断的开放和关闭实现两级控制。(PS:两级控制是指有一个总的开关中断控制位EA。当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定。)

说明:

  • EA:CPU中断允许(总允许)位。EA0=0,所有中断关闭,EA=1,CPU打开中断。
  • ES:串行口中断允许位。ES=1,允许串口中断,否则关闭串口中断。
  • ET1:定时/计数器T1中断允许位。ET1=1,允许T1中断,否则关闭T1中断。
  • EX1:外部中断1允许位。EX1=1,允许外部中断1中断,否则关闭外部中断1。
  • ET0:定时/计数器T0中断允许位。其功能与ET1相同。
  • EX0:外部中断0允许位。其功能与EX1相同。

2.4 IP寄存器

单片机有两个中断优先级,即可实现二级中断服务嵌套。两级优先级遵循下述规则:仅高优先级可中断嵌套低优先级。简而言之:高优先级的中断可打断低优先级的中断。

说明:

  • PX0:外部中断0优先级设定位;
  • PT0:定时/计数器T0优先级设定位;
  • PX1:外部中断1优先级设定位;
  • PT1:定时/计数器T1优先级设定位;
  • PS:串行口优先级设定位;
    注意: 对于同一优先级的中断,一旦中断得到响应,就不会被其他中断打断。对于各中断的优先权值,则根据中断的系统的自然优先级形成,自然优先级如下图所示:

3. 中断处理流程

3.1 定时器中断实操

要求:使P1.0管脚上输出周期为2ms的方波脉冲。设单片机晶振频率‎Fosc=6MHz。
思路:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。
PS:当定时器/计数器工作在方式1时,且确定定时为T后,其初值的计算公式为:

X = 65536 - T x Fosc /12

编程实现为:

#include <reg52.h>sbit Pulse=P1^1;//初始化定时器
void InitTimer0( ){EA = 0;             //禁止所有中断TMOD =  0x01;      // T0为定时器状态,工作方式1TL0 =  (65536 - 10000) / 256 ;         // T0的低位定时初值TH0 = (65536 - 10000) %256 ;       // T0的高位定时初值ET0 = 1;           //允许定时器/计数器0的溢出中断EA = 1;               //开CPU中断TR0 = 1;           //启动定时器0
}
//定时器0中断服务程序
void IRQTimer0 () interrupt 1{EA=0;TL0 = (65536 - 10000) / 256;           // T0的低位定时初值TH0 =  (65536 - 10000) %256;       // T0的高位定时初值Pulse=~Pulse;EA=1;
}
//主程序
void main() {InitTimer0( )Pulse=1;while(1);
}

3.2 外部中断实操

要求:绘制电路图,并通过按键实现LED灯的闪烁。
思路:将按键信号作为单片机外部中断触发信号。每产生一个外部中断就将与LED灯相连的P1.0口电平取反,从而实现LED灯闪烁
PS:由于手动按键存在机械抖动,且按键会持续一段时间(约50~100ms),为避免一次按键产生多次外部中断,需要在每次中断后进行一定延时处理,确保本次按键已经释放

实现:电路图设计为:

编程为:

#include<reg51.h>
sbit LED=P1^0;
// 主函数
void main(void){P3=0xff;     //端口初始化,为外部中断信号输入作准备。EA=1;        //开总中断IT0=0;       //设置外部中断0为电平触发方式EX0=1;     //外部中断0允许LED=0;   //LED初始状态为点亮    while(1);     //等待中断
}
//外部中断0服务程序
void EIRQ0(void) interrupt 0{unsigned int iDelay=0;EX0=0;      //关外部中断1 LED=~ LED;   //来一个外部中断信号LED状态改变一次For(iDelay=0; iDelay<65535; iDelay++); //延时等待按键释放EX0=1;       //开外部中断1
}

3.3 思考题:

现要求编制程序,并设计相关外部电路,使P1.1管脚上连接LED,并在外部中断INT0连接按键。设单片机晶振频率‎Fosc=12MHz。
1.利用定时器T0使得达到定时值后引起中断,在中断服务程序中,使LED灯状态发生反转,并持续500ms。
2.若单片机被外部中断INT0中断,则在中断服务程序中使得LED等的状态进行500ms每次的闪烁(亮500ms,灭500ms)反复5次,期间可被定时器中断,5次以后重新回到INT0中断前状态。

想要获取或查看思考题的答案,请关注公众号:Newtol,后台回复暗号:中断

4. 最重要的事

有关转载、错误指正、问题咨询等事宜请扫码关注个人公众号进行联系,更有大量视频学习资源分享

微控制器(单片机)的中断系统及应用相关推荐

  1. 51单片机的中断系统详解

    单片机的中断系统 概念 中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理. 中断响应和中断服务:CPU暂时中断当前的工作,转去处理事件B. 中断返回:将事件B处理完毕后,回到事 ...

  2. 51单片机的中断系统

    文章目录 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 中断使能寄存器: 中断查询序列: interrupt 后面中断 ...

  3. 51单片机之中断系统

    51单片机之中断系统 中断系统 四种中断类型: 外部中断: 定时器/计数器T0.T1中断: 串行口中断: 定时器/计数器T2中断: 中断入口: 与中断相关的特殊功能寄存器: 中断优先级: 中断响应时间 ...

  4. 51单片机笔记:中断系统

    单片机笔记 中断系统 工作原理 功能描述 终止当前进行的事件,去处理突发需及时处理的事件,处理完还要返回原事件. 中断符函数 void ISR() interupt n 中断符函数与普通函数区别 普通 ...

  5. 单片机学习——中断系统

    单片机必学系列 单片机学习--中断系统 单片机学习--存储器详解(程序存储器.片内RAM.拓展RAM.EEPROM) 单片机学习--定时器/计数器 单片机学习--A/D转换 更新ing 单片机学习-- ...

  6. 单片机的中断系统(单片机)

    目录 一.中断系统的基本概念 二.中断系统的控制 三.中断系统应用举例 1.实现方法 2.程序设计 主要看注释 一.中断系统的基本概念 1.中断源 要让单片机停止当前的程序去做其他事情,需要向它发出请 ...

  7. 51单片机的中断系统及编程(附案例)

    本文简单粗暴地阐述了中断的一些概念.中断源.中断寄存器各位的作用,并写出了编写一个中断函数的流程/要点.不在意细节时,可直接查看照搬"三.中断程序的编程". 一.中断概念 中断定义 ...

  8. 单片机的中断系统(一)

    想总结中断由来已久,但是总感觉一章的东西,太多,无从下手. 前几天看到一句话"能把自己学会的东西说出来,才是真的学会".今天,就要会一会这中断系统. 图片和文字内容来自:普中科技的 ...

  9. 51单片机:中断系统(外部中断,定时器中断,串口通信)

    目录 中断系统简介: 中断的优先级和嵌套: 8个中断请求源及其优先级: 中断的分别介绍: 1.外部中断0:INT0 2.外部中断1 3.T0和 T1:定时计数器的功能 4.串口中断(串口为什么使用定时 ...

  10. 51单片机仿真——中断系统(2)

    Proteus原理图如下: 要是没有设置中断优先级,则外部中断0比外部中断1的同级次序高.同级之间不会打断已被响应的中断请求.所以应该用IP寄存器设置两个中断源的中断优先级,就能使其中一个中断请求能被 ...

最新文章

  1. 硬核吃瓜!上万条数据撕开微博热搜真相
  2. Leet Code OJ 283. Move Zeroes [Difficulty: Easy]
  3. C:03---运算符优先级
  4. 产生10个1-100的随机数,并放到一个数组中, 把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
  5. kubevirt在360的探索之路(k8s接管虚拟化)
  6. 区块链必读的书_最好的区块链:5条必读
  7. mysql5.7.14_mysql 5.7.14 下载安装配置方法图文教程
  8. ios 内联函数 inline ---分解LFLiveKit
  9. Nginx基本数据结构之ngx_pool_t
  10. 谈360下拉词360下拉框的优势及360搜索推广方法有哪些?
  11. java 数据结构与算法_数据结构与算法—常用数据结构及其Java实现
  12. python的作用域分别有几种_Python作用域和命名空间
  13. t分布(Student t distribution)——正态分布的小样本抽样分布
  14. python revit二次开发_Revit二次开发06
  15. 如何用keil5打开keil4工程
  16. SQL如何本地数据库连接服务器的数据库
  17. 非对称算法之RSA的签名剖析
  18. 过年了教你自己动手写一个小游戏给表弟玩-猜数字小游戏
  19. 面试须知的前端渲染和后端渲染
  20. 播放assets文件里视频文件的问题

热门文章

  1. 如何确定计算机的负载算是高负载
  2. ERROR: syntax error at end of input
  3. Wondershare Filmora X for Mac(视频编辑器)
  4. matlab求和待定系数,数列求和的待定系数裂项法
  5. 传说中的小品:手机时代
  6. 微软NT验证登录(类似sharepoint 登录方式)
  7. 阿里OSS 的使用过程
  8. zabbix安装部署(简单,全)
  9. 线程的故事——附2:线程建立函数参数void *arg深入分析
  10. “电子游戏之父”去世享年92岁 发明首台游戏机