目录

  • 硬知识
    • 中断概念
    • 中断系统
    • 中断结构
    • 中断优先级
    • 中断处理

普中51-单核-A2
STC89C52
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0


硬知识

选自《普中51单片机开发攻略_V1.2》、《STC89C52系列单片机器件手册》

中断概念

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的, 中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。很多初学者被困在中断中,学了很久仍然不知道中断究竟是如何运作的。千万不要认为它有多难, 其实只要掌握正确的学习方法,没有哪个知识点是学不会的。
       为了能让大家更容易理解中断概念, 我们先来举一个生活事例: 你打开火, 烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。
       对于单片机来讲,中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B, 请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被 中断的地方继续处理事件 A(中断返回),这一过程称为中断。

       再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服, 水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注 意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
       单片机在执行程序时其程序流程图如下:

       引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求,CPU 暂时中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
       中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的。
       随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O 设备的数据传送问题,而且还具有如下优点:

①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;
②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增 强;
③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统 可靠性提高。

中断系统

中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
       当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求
       当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统
       STC89C52系列单片机提供了8个中断请求源,它们分别是:外部中断0(INT0)、定时器0中断、外部中断1(INT1)、定时器1中断、串口(UART)中断、定时器2中断、外部中断2(INT2)、外部中断3(NT3)。所有的中断都具有4个中断优先级。用户可以用关总中断允许位(EA/IE.7)或相应中断的允许位来屏蔽所有的中断请求,也可以用打开相应的中断允许位来使CPU响应相应的中断申请;每一个中断源可以用软件独立地控制为开中断或关中断状态;每一个中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。STC89C52系列单片机的各个中断查询次序如下表所示:

       通过设置新增加的特殊功能寄存器IPH中的相应位,可将中断优先级设为四级,如果只设置IP或XICON,那么中断优先级就只有两级,与传统8051单片机两级中断优先级完全兼容。

中断优先级控制寄存器IP和IPH的各位都由可用户程序置“1”和清“0"。但IP寄存器可位操作,所以可用位操作指令或字节操作指令更新IP的内容。而IPH寄存器的内容只能用字节操作指令来更新。STC89C52系列单片机复位后IP和IPH均为00H,各个中断源均为低优先级中断。

如果使用C语言编程,中断查询次序号就是中断号,例如:

中断结构


外部中断
       外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)和外部中断3(INT3)既可低电平触发,也可下降沿触发。请求四个外部中断的标志位是位于寄存器TCON中的IE0/TCON.1、IE1/TCON.3,IE2/XICON.2和IE3/XICON.5,当外部中断服务程序被响应后,中断请求标志位IE0,IE1,IE2和IE3会自动被清0,TCON寄存器中的ITO/TCON.0,IT1/TCON.2,IT2/XICON.0和IT3/XICON.4决定了外部中断0、1、2和3是低电平触发方式还是下降沿触发方式。如果ITx = 0(x =0,1,2,3),那么系统在INTx(x = 0,1,2,3)脚探测到低电平后可产生外部中断。如果ITx = 1(x=0,1,2,3),那么系统在INTx(x= 0,1,2,3)脚探测下降沿后可产生外部中断。外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)和外部中断3(NT3)还可以用于将单片机从掉电模式唤醒
定时器中断
       定时器0和1的中断请求标志位是TF0和TF1,当定时器寄存器THx/TLx(x= 0,1)溢出时,溢出标志位TFx(x= 0,1)会被置位,定时器中断发生。当单片机转去执行该定时器中断时,定时器的溢出标志位TFx(x=0,1)会被硬件清除。
       定时器2的中断请求标志位是TF2和EXF2,当定时器寄存器TH2/TL2溢出时,溢出标志位TF2会被置位,定时器中断发生。当单片机转去执行该定时器中断时,定时器的溢出标志位TF2会被硬件清除。当EXEN2=1且T2EX的负跳变产生捕获或重装时,EXF2置位。定时器2中断使能时,EXF2=1也将使CPU从中断向量处执行定时器2中断子程序。
串口中断
       当串行口接收中断请求标志位RI和串行口1发送中断请求标志位TI中的任何一个被置为后,串行口中断都会产生。

中断优先级

STC89C52系列单片机的所有的中断都具有4个中断优先级,对于这些中断请求源可编程为高优先级中断或低优先级中断,可实现两级中断服务程序嵌套。一个正在执行的低优先级中断能被高优先级中断所中断,但不能被另一个低优先级中断所中断,一直执行到结束,遇到返回指令RETI,返回主程序后再执行一条指令才能响应新的中断申请。以上所述可归纳为下面两条基本规则:

1,低优先级中断可被高优先级中断所中断,反之不能。
2,任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断

当同时收到几个同一优先级的中断要求时,哪一个要求得到服务,取决于内部的查询次序。这相当于在每个优先级内,还同时存在另一个辅助优先级结构,STC89C52系列单片机各中断优先查询次序如下:

中断处理

当某中断产生而且被CPU响应,主程序被中断,接下来将执行如下操作:

  1. 当前正被执行的指令全部执行完毕;
  2. PC值被压入栈;
  3. 现场保护;
  4. 阻止同级别其他中断;
  5. 将中断向量地址装载到程序计数器PC;
  6. 执行相应的中断服务程序。

中断服务程序ISR完成和该中断相应的一些操作。ISR以RETI(中断返回)指令结束,将PC值从栈中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行。
       当某中断被响应时,被装载到程序计数器PC中的数值称为中断向量,是同该中断源相对应的中断服务程序的起始地址。各中断源服务程序的入口地址(即中断向量)为:

       当“转去执行中断”时,引起中断的标志位将被硬件自动清零。由于中断向量入口地址位于程序存储器的开始部分,所以主程序的第1条指令通常为跳转指令,越过中断向量区(LJMP MAIN).
       注意:不能用RET指令代替RETI指令
       RET指令虽然也能控制PC返回到原来中断的地方,但RET指令没有清零中断优先级状态触发器的功能,中断控制系统会认为中断仍在进行,其后果是与此同级或低级的中断请求将不被响应。
       若用户在中断服务程序中进行了入栈操作,则在RETI指令执行前应进行相应的出栈操作,即在中断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确返回断点。

【51单片机快速入门指南】3:中断系统相关推荐

  1. 【51单片机快速入门指南】6.4:DHT11、DHT22单总线温湿度传感器

    目录 硬知识 DHT11 DHT22 通信协议 读取步骤 数据解读 DHT11 DHT22 示例程序 DHT11_22.c DHT11_22.h 测试程序 main.c 实验现象 DHT11 DHT2 ...

  2. 【51单片机快速入门指南】4.6:I2C 与 PCF8563实时时钟日历芯片

    目录 硬知识 概述 特性 功能描述 报警功能模式 定时器模式 CLKOUT输出 复位低电压检测器和时钟监视器 低电压检测器和时钟监视器 寄存器结构 寄存器概述 BCD编码格式寄存器概述 Control ...

  3. 【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取

    目录 硬知识 DS18B20介绍 时序 初始化时序 写时序 读时序 命令 ROM 操作命令 ROM 搜索举例 存贮器操作命令 示例程序 DS18B20.c DS18B20.h 测试程序 定时器中断服务 ...

  4. 【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

    目录 相关介绍 DMP库相关 DMP加载步骤: DMP设置数据写入 更新DMP DMP数据包结构 程序实现 DMP.c DMP.h 测试程序 四元数 实验现象 欧拉角的获取 普中51-单核-A2 ST ...

  5. 【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据

    目录 硬知识 特性参数 MPU6050 简介 模块重要寄存器简介 电源管理寄存器 1 陀螺仪配置寄存器 加速度传感器配置寄存器 FIFO 使能寄存器 陀螺仪采样率分频寄存器 配置寄存器 电源管理寄存器 ...

  6. 【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

    目录 硬知识 AT24Cxx 介绍 引脚排列 引脚说明 存储结构 器件寻址 器件操作 待机模式 存储复位 写操作 字节写 页写 应答查询 读操作 当前地址读 随机读 顺序读 示例程序 24C02.c ...

  7. 【51单片机快速入门指南】3.3:USART 串口通信

    目录 快速使用 硬知识 串行口相关寄存器 串行口控制寄存器SCON和PCON 串行口数据缓冲寄存器SBUF 从机地址控制寄存器SADEN和SADDR 与串行口中断相关的寄存器IE和IPH.IP 串行口 ...

  8. 【51单片机快速入门指南】3.2:定时器/计数器

    目录 快速使用 硬知识 传统51单片机 CPU 时序的有关知识(12T) 51 单片机定时器原理 51 单片机定时/计数器结构 定时器/计数器0/1 定时器/计数器0和1的相关寄存器 控制寄存器 工作 ...

  9. 【51单片机快速入门指南】4.5:I2C 与 TCA6416实现双向 IO 扩展

    目录 硬知识 IO 扩展芯片 TCA6416A TAC6416A 的寄存器 IO 输入寄存器 IO 输出寄存器 IO 反相寄存器 IO 方向寄存器 TCA6416A 的操作 TCA6416A 写数据 ...

  10. 【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

    目录 硬知识 简介 操作模式 HMC5883L 连续测量模式 单次测量模式 闲置模式 QMC5883L 连续测量模式 待命模式 主要差异 寄存器 寄存器列表 HMC5883L QMC5883L 配置寄 ...

最新文章

  1. 职称计算机证是继续教育的内容吗,豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~...
  2. doxygen 注释规范_编程规范 - doxygen注释规范示例(C++)
  3. Emacs支持gomodifytags
  4. python解释器是什么-python的解释器是什么?
  5. 数据结构-栈(C语言代码)
  6. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
  7. vbs当计算机重启,用vbs实现重新启动 Internet Explorer
  8. 算法笔记_065:分治法求逆序对(Java)
  9. ise和modelsim联合仿真的一些准备
  10. 业绩上不去,老板和业务员都有责任,但首先要划分清楚责任
  11. python调用指定浏览器打开网页
  12. 美国儿科学会育儿百科
  13. 面部皮肤200种问题_史上最全的皮肤病图谱,我竟然全部看完了……
  14. 布局java ee企业级开发_布局JavaEE企业级开发:寻觅框架和开发模式的完美整合...
  15. c语言上机试题倒计时,C语言课程实训-显示考试倒计时.doc
  16. 苹果首家直营店落户北京三里屯 或为iPhone铺路
  17. 论语 灵公篇(笔记)
  18. SRS4.0源码分析-序言
  19. 机器学习——神经网络、深度学习 知识点总结 及 面试题汇总
  20. 什么是人工智能物联网(AIoT)一文教你快速了解人工智能物联网(AIoT)

热门文章

  1. Docker监控方案(TIG)的研究与实践之Influxdb
  2. 登录时记住用户名和密码及cookie案例应用
  3. spring-test的简单实用方式
  4. python发送包含html、图片、附件和链接的邮件
  5. 劳心者、劳力者或CEO、CTO各得其所,足矣
  6. UPS分类:直流UPS和交流UPS
  7. 针对数据科学家和数据工程师的4条SQL技巧
  8. leetcode 746. 使用最小花费爬楼梯(dp)
  9. leetcode 463. 岛屿的周长
  10. 赛普拉斯 12864_如何使用赛普拉斯自动化辅助功能测试