51单片机 | 中断系统
文章目录
- 一、中断介绍
- 1.中断概念
- 二、中断结构及相关寄存器
- 1.中断结构
- 2.中断相关寄存器
这一节专门介绍 51
单片机的中断系统,为后面学习外部中断、定时器中断、串口中断做好铺垫。
一、中断介绍
1.中断概念
中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。
为了能让大家更容易理解中断概念, 我们先来举一个生活事例: 你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。
对于单片机来讲,中断是指 CPU
在处理某一事件 A
时,发生了另一事件 B
,请求 CPU
迅速去处理(中断发生);CPU
暂时停止当前的工作(中断响应), 转去处理事件 B
(中断服务);待 CPU
将事件 B
处理完毕后,再回到原来事件 A
被中断的地方继续处理事件 A
(中断返回),这一过程称为中断。
再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
单片机在执行程序时其程序流程图如下:
引起 CPU
中断的根源称为中断源。中断源向 CPU
提出中断请求,CPU
暂时中断原来的事务 A
,转去处理事件 B
,对事件 B
处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
当中央处理机 CPU
正在处理某件事的时候外界发生了紧急事件请求,要求CPU
暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示 CPU
中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU
请求中断,要求为它服务的时候,这就存在CPU
优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU
总是先响应优先级别最高的中断请求。
当 CPU
正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果 CPU
能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。
中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的,在前面章节的学习中我们仅对单片机 IO
口操作过(实际上操作 IO
口即操作 IO
口寄存器,只不过编译器已经帮我们把 IO
口寄存器封装好直接操作 IO
即可,这些可在 51
单片机头文件内查看),从本节开始就会介绍单片机内部更多的特殊功能寄存器以及如何配置它实现相应的功能。
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O
设备的数据传送问题,而且还具有如下优点:
- 分时操作。
CPU
可以分时为多个I/O
设备服务,提高了计算机的利用率; - 实时响应。
CPU
能够及时处理应用系统的随机事件,系统的实时性大大增强; - 可靠性高。
CPU
具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高;
二、中断结构及相关寄存器
1.中断结构
STC89C5X
系列单片机提供了 8
个中断请求源,它们分别是:外部中断0
(INTO
)、外部中断 1
(INT1
)、外部中断 2
(INT2
)、外部中断 3
(INT3
)、定时器 0
中断、定时器 1
中断、定时器 2
中断、串口(UART
)中断。(注意:51
系列单片机一定有基本的 5
个中断,但不全有 8
个中断,需要查看芯片手册,通常我们使用的都是基本的 5
个中断:INT0
、INT1
、定时器 0/1
,串口中断)。所有的中断都具有四个中断优先级(基本型只有两个)。用户可以用关总中断允许位(EA/IE.7
)或相应中断的允许位来屏蔽所有的中断请求,也可以用打开相应的中断允许位来使 CPU
响应相应的中断申请。其中有些中断源可以用软件独立地控制为开中断或关中断状态。每一个中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。 STC89C5X
系列单片机的各个中断查询次序表如下图所示:
通过设置新增加的特殊功能寄存器 IPH
中的相应位,可将中断优先级设为四级,如果只设置 IP
或 XICON
,那么中断优先级就只有两级,与传统 8051
单片机两级中断优先级完全兼容。上图中的中断查询次序即为中断号,这个中断号在编程时非常重要,当中断来临时,只有中断号正确才能进入中断。
下面我们以 51
单片机均有的 5
个中断来介绍,其内部结构框图如下所示:
INT0
对应的是P3.2
口的附加功能,可由IT0
(TCON.0
)选择其为低电平有效还是下降沿有效。当CPU
检测到P3.2
引脚上出现有效的中断信号时,中断标志IE0
(TCON.1
)置1
,向CPU
申请中断。INT1
对应的是P3.3
口的附加功能,可由IT1
(TCON.2
)选择其为低电平有效还是下降沿有效。当CPU
检测到P3.3
引脚上出现有效的中断信号时,中断标志IE1
(TCON.3
)置1
,向CPU
申请中断。T0
对应的是P3.4
口的附加功能,TF0
(TCON.5
),片内定时/计数器T0
溢出中断请求标志。当定时/计数器T0
发生溢出时,置位TF0
,并向CPU
申请中断。T1
对应的是P3.5
口的附加功能,TF1
(TCON.7
),片内定时/计数器T1
溢出中断请求标志。当定时/计数器T1
发生溢出时,置位TF1
,并向CPU
申请中断。RXD
和TXD
对应的是P3.0
和P3.1
口的附加功能,RI
(SCON.0
)或TI
(SCON.1
),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI
或当串行口发送完一帧串行数据时置位TI
,向CPU
申请中断。
2.中断相关寄存器
中断允许控制
CPU
对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE
控制的。
EX0(IE.0)
,外部中断0
允许位;ET0(IE.1)
,定时/计数器T0
中断允许位;EX1(IE.2)
,外部中断1
允许位;ET1(IE.3)
,定时/计数器T1
中断允许位;ES(IE.4)
,串行口中断允许位;EA (IE.7)
,CPU
中断允许(总允许)位。
中断请求标志
TCON
IT0(TCON.0)
,外部中断0
触发方式控制位。- 当
IT0=0
时,为电平触发方式 - 当
IT0=1
时,为边沿触发方式(下降沿有效)
- 当
IE0
(TCON.1
),外部中断0
中断请求标志位。IT1
(TCON.2
),外部中断1
触发方式控制位。IE1
(TCON.3
),外部中断1
中断请求标志位。TF0
(TCON.5
),定时/计数器T0
溢出中断请求标志位。TF1
(TCON.7
),定时/计数器T1
溢出中断请求标志位。
中断优先级
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
中断号
中断响应条件
- 中断源有中断请求;
- 此中断源的中断允许位为 1;
CPU
开中断(即EA=1
)。
以上三条同时满足时,
CPU
才有可能响应中断。在使用中断时我们需要做什么呢?- 你想使用的中断是哪个?选择相应的中断号;
- 你所希望的触发条件是什么?
- 希望在中断之后干什么?
我们以外部中断 0 为例,如下:
主程序中需要有以下代码:EA=1;//打开总中断开关 EX0=1;//开外部中断 0 IT0=0/1;//设置外部中断的触发方式
中断服务函数:
void int0() interrupt 0 using 1 {//编写用户所需的功能代码 }
在中断函数中
int0
是函数名,可自定义,但必须符合 C 语言标识符定义规则,interrupt
是一个关键字,表示51
单片机中断。后面的“0”
是中断号,外部中断0
中断号为0
,这个可参考前面的内容。后面的using 1
可省略不写。
51单片机 | 中断系统相关推荐
- 51单片机中断系统实验
51单片机中断系统实验 一.实验内容 INT0端接单次脉冲发生器.按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转. 根据实验内容编写一个程序,并在实验系统 ...
- 单片机c语言中断意义,51单片机中断系统的重要性
描述 在接下来的教程中,将会介绍定时器.串口通信等外设的基本使用,而这些外设的使用都要涉及中断,而且中断是单片机或嵌入式开发中一个相当重要的概念.不能掌握中断系统,就无法灵活应用这些外设. 1.什么是 ...
- 51单片机——中断系统、外部中断、定时器中断、串口通信C语言入门编程
目录 中断系统: 外部中断: 1.外部中断0.1:当触发时,LED状态取反 定时器中断: 1.定时器0.1:LED以1S为周期闪烁 串口通信: 1.串口中断:通过串口发送什么数据给单片机,单片机再通过 ...
- 51单片机 | 中断系统概念及结构
-------------------------------------------- 中断的过程: 对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生 ...
- C51单片机————中断系统
51单片机中断系统 CPU和外设之间的速度差异太大,CPU跑的太快了,外设追不上,机器的内部也可能出现突发事件.那怎么办?所以引入中断技术呀. Created with Raphaël 2.1.2张三 ...
- 单片机中断系统(51为例)
单片机中断系统概述: 中断是指单片机的CPU在执行程序过程中,外部有一些事件变化,如数据采集结束,电平变化,定时器/计数器溢出等,要求CPU立即处理,这时CPU暂时停止当前的执行程序,转去处理中断请求 ...
- 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议
原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...
- 基于STC89C51单片机中断系统操作
MCS-51 单片机中断系统 CPU正在处理某件事情时,外部发生另一件事情,请求CPU处理后CPU暂时停止工作后,转入处理发生的事情,结束后返回原任务.这一程序称为中断. Created with R ...
- 51单片机最小系统电路设计
博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...
最新文章
- 「图像分类」从数据集和经典网络开始
- 竞争位移之四:概念抽屉与市场选择
- mq多个消费者消费一个消息_一个普通消费者的米家产品使用感受
- [js] 实现一个函数记忆的方法
- 关于灵魂安放,年轻人如何选择适合自己的城市呢?学长有话说
- 实习笔试题,源代码编译
- .NET多线程编程(14)——用C#实现蜘蛛/爬虫程序的多线程控制
- 机器学习和深度学习资料合集
- 汉字笔划,五笔字根、拆分、练习汇总
- 51单片机:74LS138译码实验
- linux修改域名命令是,Linux系统脚本命令修改动态域名解析记录
- matlab 0106,matlab中的plotyy
- linux进阶-scp命令及相关传输命令全get
- shazam 音频指纹 听歌识曲 原理(附代码)
- 计算机网络-网络层(网络层功能概述,异构网络互联,路由与转发,SDN基本概念)
- Hack The Box-meow
- 时间序列_第一篇 知识概述(3)_分解
- Jodd-Java的瑞士军刀 demo
- win11照片一打开就是打印怎么办?
- nosql | 搭建mongodb副本集
热门文章
- python算法工程师面试_NLP算法工程师面试题及复习资料
- MS Learn 学堂|借用 Power Apps 搭建用章申请与管理平台
- 湖南中创教育PMP项目管理——团队管理
- 数据结构与算法:顺序表和链表的常用操作 (很全,基本涵盖本章所有算法)
- 山东大学软件学院数据库系统2022年春期末考试
- 概率论笔记:高斯分布的边缘概率
- 采集+图谱可视化|手把手教你采集明星人物关系并进行图谱展示
- 5分钟装好Rational Rose破解版 非常好用
- Veil框架工具使用(免杀Payload生成工具)
- linux avr,怎样使用Simavr在Linux中调试AVR代码