51单片机(十四)—— 中断功能介绍

2023-11-17

      中断是单片机的一个重要功能,本文我们就对51单片机的中断进行介绍。

      所谓“中断”,通俗一点讲,就是单片机停止正在执行的任务,转去执行其它的急需解决的任务,当这个任务完成之后,在回到原来的任务继续执行。中断就是为了使单片机能够对外部或内部随机发生的事件进行实时处理而设计的。中断功能的存在,很多程度上提高了单片机处理外部或内部事件的能力。中断功能是我们在学习单片机过程中必须掌握的。

        STC89C516单片机内部有6个中断源,也就是说,有6种情况发生时,会使单片机去处理中断程序。

        为了能让大家更容易理解中断的概念,我们举一个通俗的例子:你打开火,烧一壶水,然后去扫地。在扫地过程中,突然听到水壶发出的水开的报警声,这时,你停止扫地,立即去关掉火,然后将开水灌进暖水瓶中,灌完开水之后你又回去扫地,这个过程就发生了一次中断,这个过程如下图所示,扫地是个主任务,水开报警将扫地中断,导致去灌水,灌完水之后有回来继续扫地。

        对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理事件B(中断发生),CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务),待CPU处理完事件B后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,其流程如下图所示。

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

       引起CPU中断的根源,称为中断源,中断源性CPU提出中断清求,CPU暂时中断原来的事件A,转去处理事件B,对事件B处理完毕之后,在回到原来中断的地方,称为中断返回。实现上述中断的功能部件称为中断系统。

中断开启与关闭,设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的。

        与中断有关的知识点还有一个叫中断嵌套,意思是说:如果单片机正在处理一个中断程序,此时,又有另一个中断优先级别更高的中断现象发生,单片机会停止当前的中断程序,而转去执行新的中断程序,新的中断程序处理完毕后再回到刚才停止的中断程序出继续执行,执行完这个中断后再返回主程序继续执行主程序。中断嵌套的流程图如下图所示。

        当设计中断时,还有一个重要的问题:中断优先级。单片机在执行程序时,可能会遇到同一时刻发生两个中断的情况,那么单片机该先执行哪个中断呢?这取决于单片机内部一个特殊功能寄存器——中断优先级寄存器的设置情况。通过设置中断优先级寄存器,我们可以告诉单片机,当两个中断同时出现时,先执行哪个中断程序。若没有设置操作优先级寄存器,单片机会按照默认的一套优先级自动处理。

        STC89C516单片机内部有6个中断源,它们分别为:

INT0—外部中断0,由P32端口线引入,低电平或下降沿触发中断。

INT1—外部中断1,由P33端口线引入,低电平或下降沿触发中断。

T0—定时器/计数器0中断,由T0计数器计满回零引起。

T1—定时器/计数器1中断,由T1计数器计满回零引起。

T2—定时器/计数器2中断,由T2计数器计满回零引起。

TI/RI—串行口中断,串行端口完成一帧字符发送/接收后引起。

单片机的6个中断源的默认中断优先级别如下表所示。

中断源

默认中断级别

序号(C语言用)

入口地址(汇编语言用)

INT0—外部中断0

最高

0

0003H

T0—定时器/计数器0中断

第2

1

000BH

INT1—外部中断1

第3

2

0013H

T1—定时器/计数器1中断

第4

3

001BH

TI/RI—串行口中断

第5

4

0023H

T2—定时器/计数器2中断

最低

5

002BH

        接下来我们来介绍一下,在单片机中断使用过程中经常用到的两个寄存器:中断允许寄存器IE和中断优先级寄存器IP。

1)中断允许寄存器IE

        中断允许寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中字节地址为A8H,位地址(由低位到高位)分别为A8H~AFH,该寄存器可进行位寻址,即可以对这个寄存器的每一位进行操作。单片机复位时IE寄存器全部被清0,这个寄存器的各位如下表所示。

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

EA

--

ET2

ES

ET1

EX1

ET0

EX0

位地址

AFH

--

ADH

ACH

ABH

AAH

A9H

A8H

EA—全局中断允许位。

EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开和关闭。

EA=0,关闭全部中断。

--—无效位。

ET2—定时器/计数器2中断允许位。

ET2=1,打开T2中断。

ET2=0,关闭T2中断。

ES—串行口中断允许位。

ES=1,打开串行口中断。

ES=0,关闭串行口中断。

ET1—定时器/计数器1中断允许位。

ET1=1,打开T1中断。

ET1=0,关闭T1中断。

EX1—外部中断1中断允许位。

EX1=1,打开外部中断1中断。

EX1=0,关闭外部中断1中断。

ET0—定时器/计数器0中断允许位。

ET0=1,打开T0中断。

ET0=0,关闭T0中断。

EX0—外部中断0中断允许位。

EX0=1,打开外部中断0中断。

EX0=0,关闭外部中断0中断。

2)中断优先级寄存器IP

        中断优先级寄存器在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别为B8H~BFH,IP寄存器用来设定各个中断源属于两级中断中的哪一级,该寄存器可以进行位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时IP全部被清为0,这个寄存器的定义如下表所示。

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

--

--

--

PS

PT1

PX1

PT0

PX0

位地址

--

--

--

BCH

BBH

BAH

B9H

B8H

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

PS=1,串行口中断定义为高优先级中断。

PS=0,串行口中断定义为低优先级中断。

PT1—定时器/计数器1中断优先级控制位。

    PT1=1,定时器/计数器1中断定义为高优先级中断。

    PT1=0,定时器/计数器1中断定义为低优先级中断。

PX1—外部中断1中断优先级控制位。

    PX1=1,外部中断1定义为高优先级中断。

    PX1=1,外部中断1定义为高优先级中断。

PT0—定时器/计数器0中断优先级控制位。

    PT0=1,定时器/计数器0中断定义为高优先级中断。

    PT0=0,定时器/计数器0中断定义为低优先级中断。

PX0—外部中断0中断优先级控制位。

    PX0=1,外部中断0定义为高优先级中断。

    PX0=1,外部中断0定义为高优先级中断。

        在51单片机中,高优先级中断能够打断低优先级中断以形成中断嵌套,同优先级中断之间,或低级对高级中断之间则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,在没有设置任何中断优先级的情况下,按照默认中断级别响应中断。在设置了中断优先级后,则按设置顺序确定响应的先后顺序。

        本文我们对中断的基本原理和相关寄存器进行了介绍,有关中断的具体用法我们将在后面的文章中进行介绍。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机(十四)—— 中断功能介绍 的相关文章

  • 【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

    目录 前言 硬件介绍 PWM基础 蜂鸣器简介 原理图分析 蜂鸣器驱动电路 软件实现 蜂鸣器短鸣 蜂鸣器功能封装 总结 前言 蜂鸣器在生活中的应用实则相当广泛 通过本章你将学会制造噪声 笑 你将学会驱动它们 并发出响声 硬件介绍 PWM基础
  • Keil4编辑器OXFD错误解决办法

    keil是德国的 对汉字的兼容不太好 在做液晶显示需要显示带0XFD的汉字如 三 时就不能正常显示 可以通过以下的补丁来修复 补丁文件 keil4编辑器0XFD补丁 其它文档类资源 CSDN下载https download csdn net
  • 关于51/STC单片机中断优先级的调整

    来源 单片机简单程序 zhjysx的博客 CSDN博客https blog csdn net zhjysx category 11558658 html 目录 内容简述 理论 中断源类型 IP寄存器 LED程序 Proteus仿真图 外部中
  • 【PID】51单片机PID控制电机转速

    PID参考链接 PID增量控制 include Pid Init h include main h extern u16 out extern u16 CurSpeed extern u16 SpeedSet extern u16 PWMT
  • 6.2小车循迹,跟随,摇头测距功能实现

    1 循迹小车 1循迹模块的使用 TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线没有被反射回来或被反射回来但强度不够大时 红外接收管一直处于关断状态 此时模块的输出端为高电平 指示二极管一直处于熄灭状态 被检测物体出现
  • keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

    文章目录 前言 一 什么是软件调试 Debug 有什么用 二 keil Debug常用按钮 总结 前言 单片机的调试分为两种 一种是使用软件模拟调试 第二种是硬件调试 两种调试方式各有不同 软件模拟调试有误差 而硬件调试 借用仿真器调试是嵌
  • 基于51单片机 数控恒流源设计 可调电流源

    设计硬件组成 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计 项目定制觉得选题不错 分享一下 由51单片机 LCD1602液晶 变压器 整流桥 开关电源LM2596 TLC5615 LM358 TIP31C 按键 TL4
  • 备战电赛,该如何学习

    距2023年电赛 全称 全国大学生电子设计竞赛 只有二个月的时间了 今年是国赛通道 作为A类级竞赛 很多电子类专业的学生 以及非电子类专业的学生都想去参加 但是它的门槛有很高 很多大一的学生参加电赛只是为了获得体验感 当然你也可以抱学长的大
  • 基于51单片机的霍尔自行车里程测速仪(含Keil程序和Proteus文件)

    系统概述 系统使用的模块有AT89C51单片机 LCD1602显示屏 霍尔测速模块 本设计采用51单片机为核心控制 使用LCD1602显示采集到的速度 霍尔测速模块进行测速 测速的原理是通过磁感应原理检测开关变化量 通过检测两个开关量的时间
  • 关注深度学习代码

  • 单片机知识总结,51中断秘籍(外部中断,定时器中断,定时器计数),串口通信秘籍【1000字】【原创】

    文章目录 1 普中科技开发板 2 中断寄存器配置详解 截图 3 中断寄存器配置文字总结 4 文字总结2 5 文字总结3 6 代码函数示例 1 外部中断0初始化函数 2 外部中断1初始化函数 3 定时器中断0初始化函数 4 定时器中断1初始化
  • 基于51单片机的停车场车位管理系统

    具体实现功能 由AT89S52单片机 AT24C02数据存储模块 按键模块 LCD1602显示 报警模块等构成 具体功能 1 显示停车场现有车辆数和已停放过车辆数 总共16个车位 指示灯指示具体的车位占用情况 2 可以手动设置总车位数以及剩
  • 51单片机实训(一)————Keil 基本操作

    文章目录 前言 一 Keil是什么 二 Keil基本操作 1 新建Keil工程 2 编写代码 3 输出 hex 文件 并编译 4 关联仿真程序 总结 前言 大家好 我是三 这是我的第二篇文章 更新有点慢 抱歉 上一篇文章 咱们了解学习了Pr
  • 8x8LED点阵

    点量这个只需要把9高电平 13低电平就可以了 共阳极点阵 行线是led的正极 列线是led的列线 左上角点亮 显示多个灯是动态扫描的 一个一个显示的 然后间隔速度要快就可以造成显示 点阵由两篇74Hc595级联在一起驱动的 只需要三个io口
  • 51单片机—使用PWM对直流电机调速

    文章目录 什么是PWM PWM是怎么对直流电机进行调速的 通过定时器中断实现PWM调速 上代码 什么是PWM PWM 脉宽调制 是靠改变脉冲宽度来控制输出电压 通过改变周期来控制其输出频率 脉冲可以理解为是IO口的一次高低电平改变 PWM是
  • 51单片机——ADC模数转换、DAC数模转换PWM C语言入门编程

    目录 ADC XPT2046 1 ADC模数转换 数码管上显示AD模块采集电位器的阻值 热敏的温度值 光敏的光值 DAC PWM 1 DAC数模转换 DAC PWM 模块上的指示灯DA1呈呼吸灯效果 由暗变亮再由亮变暗 ADC ADC an
  • 基于51单片机汽车胎压温度监测报警系统(程序+仿真+原理图+元件清单)

    功能介绍 采用51单片机作为主控单片机 通过采集传感器的胎压和DS18b20的温度 显示到LCD1602上面 并且可以通过按键设置温度和压力的阈值 超过此值蜂鸣器进行报警 可以及时的提醒驾驶员胎压或者温度异常 程序采用keil编写 并且有中
  • 基于DS18B20和HS1101的仓库自动报警系统

    基于DS18B20和HS1101的仓库自动报警系统 背景介绍 效果展示 完整版的项目代码 仿真文件 下面是项目原理图 具体管脚定义如下图 18B20温度原理 HS1101湿度传感器 红外测距报警模块我用到的是GP2D12 通过数模转化器AD
  • 51单片机——LED点阵屏

    51单片机 LED点阵屏 LED点阵屏 LED点阵屏原理 74HC595串转并芯片 源代码 例程一 静态笑脸 效果展示 例程二 笑脸 gt 平脸 gt 哭脸 效果展示 LED点阵屏 c51的LED点阵屏其实就是一个8 8像素的屏幕 一共有6
  • 51单片机的智能饮水机控制系统【proteus仿真+程序+原理图】

    1 主要功能 该系统由AT89C51单片机 LCD1602模块 DS18B20温度传感器模块 DS1302时间模块 继电器驱动模块 电位器模块构成 适用于智能饮水机 智能水杯等相似项目 可实现功能 版本一 1 LCD1602实时显示时间 水

随机推荐

  • 写个爬虫吧

    import requests url https image baidu com search acjson tn resultjson com ipn rj ct 201326592 is 0 2C0 fp detail logid 1
  • 03-MySQL数据类型

    一 数值类型 整数 MySQL 主要提供的整数类型有 TINYINT SMALLINT MEDIUMINT INT BIGINT 浮点数 浮点类型有两种 分别是单精度浮点数 FLOAT 和双精度浮点数 DOUBLE 定点类型 只有一种 就是
  • 记录一次 JS 解密去混淆的经历 -- 如何破解加密的 JS 代码(一)

    写在前头 昨天发了一个 某JS最牛加密脱壳解密破解去混淆工具 有朋友说上代码不如讲一下思路 于是今天准备捋一下这个思路 顺便当整理复习了 需要直接解密代码的请看上一篇文章 这里只有思路与过程 阅读此文默认你有一定的 JavaScript 基
  • vscode工作区同时显示多个文件

    有时候安装的vscode打开一个文件又打开另一个文件只会保存新的文件 旧的文件别替换 这样做项目比较难受 所以用下面方法可以打开多个文件 workbench editor showTabs true
  • 【E2E】Tesseract5+VS2017+win10源码编译攻略

    一 记录我目前在win10 X64和VS2017的环境下成功编译Tesseract5 0的方式 二 记录在VS2017 C 工程中调用Tesseract4 0的方法 三 记录编译和调用Tesseract4 0过程中踩到的坑和相应的解决方案或
  • IMU立大功:有效减小建筑工人高空坠落风险

    尽管建筑行业不断努力改善工作场所安全 但它仍然是全球最危险的行业之一 建筑行业的工作死亡或致命工伤比例为25 在这些致命伤害中 大约36 是由高空坠落造成的 这是建筑行业从业者意外死亡的主要原因之一 其他国家 包括澳大利亚 中国和韩国 也因
  • 使用eclipse创建JAVA项目

    打开eclipse软件 选择好工作区域 就是项目的储存地址 后登陆 File New Project 选择 Java Project 输入项目名称 点击Finish SRC是专门放java源代码的文件夹 就是你在IDE里编写的各个java类
  • C语言上机实验思路分享9

    实验项目名称 实验十 C 文件基本操作 实验目的及要求 1 掌握文件和文件指针的概念以及文件的定义方法 2 了解文件打开和关闭的概念和方法 3 掌握有关文件操作的函数 实验内容 方法和步骤 1 文件 stu info1 txt 包含学生的基
  • 模板型模板参数报错,无法调试通过,---《深入实践c++模板》例子

    include
  • 迪杰斯特拉算法求图的某个顶点到其他顶点的最短路径问题

    迪杰斯特拉算法 使用图的广度优先遍历算法 比如先从G点出发 找到能与G直接连接的顶点 然后才从与G最近的A出发 找到与A相邻的节点 通过比较G到每个顶点的距离大小 筛选出到每个点的最短路径 代码 迪杰斯特拉算法球最短路径问题 public
  • hdu 3966 Aragorn's Story

    Problem acm hdu edu cn showproblem php pid 3966 Reference 树链剖分 树链剖分原理 树链剖分详解及模板 HDU3966 树链剖分 Meaning 一棵 n 个点的树 每给结点有个值 三
  • BERT、BART、T5 等法学硕士的比较分析

    探索语言模型 介绍 在这篇博文中 我将讨论 BERT BART 和 T5 等大型语言模型 到 2020 年 法学硕士领域取得的重大进展包括这些模型的开发 BERT和T5是Google开发的 BART是Meta开发的 我将根据这些型号的发布日
  • css实现水平居中

    代码示例 div class box div class box1 div div 1 弹性布局 推荐 display flex 这些要添加在父级的 是父级的属性 父级添加display flex 父级添加justify content c
  • Zookeeper 基本操作

    Zookeeper 基本操作 文章目录 Zookeeper 基本操作 1 查看zk的运行状态 2 客户端连接zk 3 ls 查看 4 get 获取节点数据和更新信息 5 stat 获得节点的更新信息 6 ls2 ls命令和stat命令的整合
  • java localdate mysql_如何使用JDBC从java.sql.Date获取LocalDateTime对象?

    Java8的java time包提供了一个名为LocalDateTime的类 用于获取本地日期和时间的当前值 除日期和时间值外 还可以使用此字段来获取其他日期和时间字段 例如 一年中的某天 一周中的某天和一年中的某周 将java sql D
  • DIY简单的RTOS(一)

    说明 在看了很多关于RTOS的文章 一直想做一个简单的RTOS 苦于现有资料非常少 在看了很多关于现有RTOS的底层实现 再结合相关文章 完成一个简单的RTOS demo 代码难免有不合理之处 仅当个人学习做笔记使用 项目代码 什么是RTO
  • opencv图像的基础操作

    读取图像 cv imread 参数 要读取的图像 读取 式的标志 cv IMREAD COLOR 以彩 模式加载图像 任何图像的透明度都将被忽略 这是默认参数 cv IMREAD GRAYSCALE 以灰度模式加载图像 cv IMREAD
  • osgEarth的Rex引擎原理分析(五十一)osg::Program与osgEarth::VirtualProgram的关系

    目标 四十五 中的问题113 osgEarth VirtualProgram在apply时用到了osg Program 也就是VirtualProgram最终是要通过osg Program实现着色器功能 只不过VirtualProgram中
  • AI工具究竟是帮手还是对手?你怎么看,一起来聊聊吧!

    AI工具究竟是帮手还是对手 你怎么看 一起来聊聊吧 1 你现在正在哪个领域学习或工作呢 你用过哪些AI智能工具 2 作为行业人士或正在学习的学生 你认为AI工具的出现会提升你的工作或学习效率吗 3 对于AI智能工具的出现 我们应该做好哪些准
  • 51单片机(十四)—— 中断功能介绍

    中断是单片机的一个重要功能 本文我们就对51单片机的中断进行介绍 所谓 中断 通俗一点讲 就是单片机停止正在执行的任务 转去执行其它的急需解决的任务 当这个任务完成之后 在回到原来的任务继续执行 中断就是为了使单片机能够对外部或内部随机发生