null单片机原理及应用
(C语言版)
第5章 MCS-51单片机中断系统单片机原理及应用
(C语言版)
第5章 MCS-51单片机中断系统主 编:周国运
本章制作:仝选悦
中国水利水电出版社第5章 MCS-51单片机中断系统第5章 MCS-51单片机中断系统目 录
5.1 中断概述
5.2 中断系统结构及控制
5.3 中断响应过程及处理过程
5.4 中断应用举例第5章 MCS-51单片机的中断系统第5章 MCS-51单片机的中断系统 本章主要讨论MCS-51单片机中断系统。
内容主要有:MCS-51单片机中断系统结构、中断控制、中断优先级、中断处理过程,以及中断的应用。
通过本章的学习,应该理解中断系统结构、中断响应的条件和中断处理过程;
掌握中断控制、中断优先级,灵活的应用中断解决实际问题。5.1 中断概述5.1 中断概述主要内容
5.1.1 微机的输入/输出几种控制方式
5.1.2 中断的相关概念 5.1.1 微机的输入/输出几种控制方式5.1.1 微机的输入/输出几种控制方式 单片机系统中,CPU和外部设备之间不断进行信息的传输。通常CPU和外设之间的信息传送方式有以下几种:
程序控制方式
中断方式
直接存储器存取(DMA)方式5.1.1 微机的输入/输出方式5.1.1 微机的输入/输出方式 1、 程序控制方式
可以分为以下两种方式。
(1)无条件传送方式
外设始终处于就绪状态,CPU不必查询外设的状态,直接进行信息传输,称为无条件传送方式。
此种信息传送方式只适用于简单的外设。如开关和数码段显示器等。5.1.1 微机的输入/输出方式5.1.1 微机的输入/输出方式 (2)条件传送方式
CPU通过执行程序不断读取并测试外部设备状态,如果输入设备处于准备好状态或输出设备为空闲状态时,则CPU执行传送信息操作。
由于条件传送方式需要CPU不断地查询外部设备的状态,然后才进行信息传送,所以也称为“查询式传送”。5.1.1 微机的输入/输出方式5.1.1 微机的输入/输出方式 2、 中断方式
外部设备与CPU之间以中断信号作为数据交换的控制信号。
当外部设备需要与CPU进行数据交换时,由接口部件向CPU发出一个请求信号,CPU响应这一中断请求后,在中断服务程序中完成一个字节或多个字节的信息交换。
中断方式具有并行工作、实时传输、充分利用CPU效率等特点。5.1.1 微机的输入/输出方式5.1.1 微机的输入/输出方式 中断传送仍由CPU通过程序来传送,每次都要执行指令进行断点、现场的保护和恢复。对于高速I/O,就显得速度太慢了。
3、DMA方式(直接存储器存取)
DMA控制方式主要用于存储器和外设之间直接传送、块传输。
DMA请求总线:当某一外部设备需要输入/输出一批数据时,向DMA控制器发出请求,DMA控制器接收到这一请求后,向CPU发出总线请求信号。5.1.1 微机的输入/输出方式5.1.1 微机的输入/输出方式 DMA控制数据传输:CPU响应DMA的请求,把总线使用权交给DMA控制器,DMA将外设数据读入、并直接写入存储器,或将数据从存储器读出并直接送给外设。传送过程不需要CPU参与。
DMA释放总线:当一批数据传送后, DMA控制器再向CPU发出“结束总线请求”,CPU响应请求,收回总线使用权。
DMA方式速度高、效率高,可以与CPU并行工作。5.1.2 中断的相关概念 5.1.2 中断的相关概念 1、中断的概念
CPU在正常运行的时候,外部或者内部发生了请求CPU迅速去处理的事件,CPU暂时中断当前的程序,去处理所发生的事件,处理完事件后,再返回到原来被中断的程序继续运行。此过程称为中断。5.1.2 中断的相关概念 5.1.2 中断的相关概念 2、中断源
引起CPU中断的设备和事件就是中断源。
3、中断请求
中断源向CPU发出的请求处理信号,即中断请求或中断申请。
4、中断响应
CPU暂时中止正在处理的事情,转去处理突发事件的过程,称为中断响应。5.1.2 中断的相关概念 5.1.2 中断的相关概念 5、其他概念
中断系统:实现中断功能的部件称为,又称中断机构。
中断服务程序:CPU响应中断后,处理中断事件的程序。
断点:CPU响应中断请求,转去执行中断服务程序时的PC值,即为断点地址。
中断返回:CPU执行完中断服务程序后回到断点的过程。5.1.2 中断的相关概念 5.1.2 中断的相关概念 6、中断的功能
中断是计算机的一项重要技术,计算机引入中断后,大大提高了它的工作效率和处理问题的灵活性,主要功能有以下几个方面。
使CPU与外设同步工作
实现实时处理
故障及时处理5.2 中断系统的结构及控制5.2 中断系统的结构及控制主要内容
5.2.1 MCS-51的中断结构
5.2.2 MCS-51的中断源
5.2.1 MCS-51单片机的中断结构5.2.1 MCS-51单片机的中断结构 中断系统构成:增强单片机主要由5个特殊功能寄存器、相关硬件电路等组成。有6个中断源,两个中断优先级。
特殊功能寄存器主要用于:控制中断的开放和关闭、保存中断信息、设置中断的优先级别。
硬件查询电路主要用于:判定6个中断源的优先级别。
MCS-51增强型单片机的中断结构如图5-2所示。 图5-2 增强型单片机的中断系统结构5.2.2 MCS-51的中断源5.2.2 MCS-51的中断源 MCS-51中断系统主要是对6个中断源进行管理,依次为:
外部中断0(P3.2)
外部中断1(P3.3)
定时器/计数器0溢出中断
定时器/计数器1溢出中断
定时器/计数器2溢出中断
串行口中断
CPU主要是通过标志寄存器、控制寄存器、优先级寄存器对中断源进行管理。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 (1)与中断标志相关的SFR
主要有:定时器/计数器T0、T1控制寄存器TCON
串行口控制寄存器SCON
定时器/计数器2控制寄存器T2CON(第6章介绍)
(2)中断控制寄存器:TCON、IE
(3)中断优先级寄存器:IP5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 1、串行口控制寄存器SCON
字节地址98H。可以位寻址, 格式如下:
TI(SCON.1):串行口发送中断标志。
串行口发送完一帧,由硬件置位。响应中断后,必须用软件清 0。
RI(SCON.0):串行口接收中断标志。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 串行口接收完一帧,由硬件置位。响应中断后,必须用软件清0。
例如:CLR TI;
5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 2、T0、T1 的控制寄存器TCON
TCON格式如下:TCON可位寻址。复位后TCON=00H。
TF1(TCON.7):T1溢出标志位
当T1计满溢出时,由内部硬件置位;
中断响应后自动清 0。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源TF0:T0溢出标志位
功能同TF1。
IT1:外中断1触发方式设置位
IT1=0,外中断1为低电平触发
CPU在每一个机器周期的S5P2期间对P3.3引脚采样,若P3.3为低电平,则使IE1置1,否则IE1清0。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 IT1=1,外中断1为下降沿触发
采样:CPU在每一个机器周期的S5P2期间对P3.3引脚采样,若上一个机器周期
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
为高电平,紧挨着的下一个机器周期为低电平,则使IE1置1。
IT0:外中断0触发方式控制位。
功能同IT1。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源IE1:外中断1中断请求标志位
外部中断1引脚有请求信号置1;
IE1的清0方式问题:与外中断的触发方式有关
(1)低电平触发,则P3.3引脚为高电平自动对IE1清0;
(2)下降沿触发,则CPU响应中断由硬件自动对IE1清0。
IE0:外部中断0中断请求标志位
功能同IE1。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 3、中断允许寄存器IE
可以位寻址,其格式如图5-5所示:
5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源EA(IE.7):中断允许总控位。
EA=0,屏蔽所有的中断请求; EA=1,开放中断总控制位。
ET2(IE.5):定时器/计数器2的中断允许位
ET2=0,禁止T2中断;
ET2=1,允许T2中断。
ES(IE.4):串行口中断允许位。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 ES=0,禁止串行口中断;
ES=1,允许串行口中断。
ET1(IE.3):定时器/计数器1中断允许
ET1=0,禁止T1中断;
ET1=1,允许T1中断。
EX1(IE.2):外部中断1中断允许位 EX1=0,禁止外部中断1中断; EX1=1,允许外部中断1中断。
5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源ET0(IE.1):定时器/计数器0中断允许位
ET0=0,禁止T0中断;
ET0=1,允许T0中断。
EX0(IE.0):外部中断0的中断允许位 EX0=0,禁止外部中断0中断;
EX0=1,允许外部中断0中断。
例5-1 假设允许INT0、INT1、T0、T1中断,试设置IE的值。
解:(1)用C语言字节操作:
IE=0x8f;5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源(2)用C语言位操作指令
EX0=1; //允许外部中断0中断
ET0=1; //允许定时/计数器0中断
EX1=1; //允许外部中断1中断
ET1=1; //允许定时/计数器1中断
EA = 1 //开总中断控制
汇编语言
(1)用字节操作指令:
MOV IE,#8FH
(2)用位操作指令:5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源SETB EX0 ;允许外部中断0中断
SETB ET0 ;允许定时/计数器0中断
SETB EX1 ;允许外部中断1中断
SETB ET1 ;允许定时/计数器1中断
SETB EA ;开总中断控制位
4、中断优先级控制寄存器IP
MCS-51单片机有6个中断源,每个中断源有两级优先级控制:高优先级和低优先级, 以便CPU对所有的中断实现两级中断嵌套。
对 IP设置可让中断源处于不同的优先级。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 IP复位后为00H。其格式如下图所示。PT2(IP.5):T2中断优先级控制位
PT2=0,设置为低优先级;
PT2=1,设置为高优先级。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源PS(IP.4):串行口中断优先级控制位
PS=0,设置为低优先级;
PS=1,设置为高优先级。
PT1(IP.3):T1的中断优先级控制位
功能同PT2。
PX1(IP.2):外中断1中断优先级控制位
PX1=0,设置为低优先级;
PX1=1,设置为高优先级。 5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源PT0(IP.1):T0中断优先级控制位
功能同PT1。
PX0(IP.0):外中断0中断优先级控制位
功能同PX1。
89C52单片机的中断优先级采用了自然优先级和人工设置高、低优先级的策略。中断处于同一级别时,就由自然优先级确定。开机时,每个中断都处于低优先级,中断优先级可以通过程序来设定,由中断优先级寄存器IP来统一管理。 如下图所示:
5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源系统优先级规则图:5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源中断优先级规则:
(1)对同时发生多个中断申请
不同优先级的中断同时申请:先高后低
相同优先级的中断同时申请:按序执行
(2)不同时发生多个中断申请
正处理低优先级中断又接到高级别中断:高打断低
正处理高优先级中断又接到低级别中断:高不理低
5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源 在上述规则中,当CPU正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,就暂时中止执行优先级较低的中断源的服务程序,保护当前断点,转去处理更高的中断请求,服务完毕,回到原来被中止的中断程序继续执行。此过程为中断嵌套。
两级中断嵌套的处理过程如图5-7所示。5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源
思考:当系统正在处理定时器0中断的过程中,定时器1和外部中断0有中断请求,描述CPU的中断处理过程?5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源例5-2 设定时器和串行口中断为高优先级,两个外部中断为低优先级,试设置IP的值。
解:C语言程序
IP=0x3a;
汇编语言程序:
(1)使用字节操作指令:
MOV IP,#3AH
(2)使用位操作指令:
CLR PX0 ;设置外部中断0为低级中断5.2.2 MCS-51单片机的中断源5.2.2 MCS-51单片机的中断源CLR PX1 ;置外部中断1为低级中断
SETB PT0 ;置定时器/计数器0为高级中断
SETB PT1 ;置定时器/计数器0为高级中断
SETB PS ;置串行口中断为高优先级
SETB PT2 ;置定时器/计数器2为高级中断
由于复位后IP=00H,外部中断在此可以不设置。5.3 中断响应及处理过程5.3 中断响应及处理过程主要内容
5.3.1 中断响应的过程
5.3.2 中断的处理和返回过程5.3.1 中断响应的过程5.3.1 中断响应的过程一、中断响应条件
(1)中断源有中断请求;
(2)中断总允许位EA=1;
(3)发出中断请求的中断源的中断允许控制位为1。
在满足以上条件的基础上,若有下列任何一种情况存在,硬件生成的长调用指令“LCALL”将被封锁。 5.3.1 中断响应的过程5.3.1 中断响应的过程(1)CPU正在执行一个同级或高优先级的中断服务程序;
(2)正在执行的指令尚未执行完;
(3)正在执行中断返回指令RETI或者对寄存器IE、IP进行读/写的指令。
CPU在执行完上述指令之后,要再执行一条指令,才能响应中断请求。5.3.1 中断响应的过程5.3.1 中断响应的过程二、中断响应过程
从中断请求发生直到被响应,准备去执行中断服务程序,此过程即中断响应过程。中断响应过程一般包括如下几个阶段:
1、中断采样并置位
中断采样过程:CPU在每个机器周期S5P2期间顺序对中断源采样、置中断标志。
2、查询标志
在中断采样后的下一个周期的S6按优先级顺序查询中断标志。5.3.1 中断响应的过程5.3.1 中断响应的过程 3、响应中断
在满足中断响应条件情况下,若中断标志为1,在接下来周期S1开始按优先级顺序进行中断处理。
中断响应过程的操作步骤:
硬件自动生成长调用指令LCALL addr16,addr16为各中断源的中断程序入口地址。
PC的内容(即断点地址)压入堆栈。先低位地址,后高位地址,并修改堆栈指针SP。
将中断源的中断入口地址装入程序计数器PC,执行中断服务程序。5.3.1 中断响应过程5.3.1 中断响应过程三、中断响应的时间
一般来说,中断的响应时间最短为3个机器周期,最长为8个机器周期。
一般中断请求标志位查询占1个机器周期。而机器周期又恰好是指令的最后一个机器周期。执行此指令后,CPU将响应中断,产生硬件长调用指令。
长调用LCALL指令需要2个机器周期。这样,中断响应时间为3个机器周期。
5.3.1 中断响应过程5.3.1 中断响应过程 响应时间最长的情况(8周期):
CPU正在执行的是RETI指令、或访问IP、IE指令;
其后恰好是4个机器周期的指令MUL、或DIV) 。
加上执行长调用指令LCALL所需2个机器周期,则需要8个机器周期。
如果中断请求被前面所列三个条件之一所阻 止,则所需的响应时间就更长。
对于实时性要求高的系统,应该考虑中断响应的时间。5.3.2 中断处理和返回过程5.3.2 中断处理和返回过程一、中断处理过程
当CPU响应中断后,做中断处理。首先获得中断服务程序的入口地址。
其次:执行中断服务程序。5.3.2 中断处理和返回过程5.3.2 中断处理和返回过程 中断服务程序一般包括三部分内容;
保护现场
中断处理程序
恢复现场
现场:是指中断发生时单片微机中存储单元、寄存器、特殊功能寄存器中的数据或标志位等。
例如A、B、Rn、PSW、DPTR等 5.3.2 中断的处理和返回过程5.3.2 中断的处理和返回过程保护的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
可以有以下几种:
⑴ 进栈(使用PUSH、POP)
⑵切换工作寄存器
⑶暂存内部存储器单元
多使用堆栈方法,PUSH、POP成对使用。
5.3.2 中断处理和返回过程5.3.2 中断处理和返回过程 二、中断返回
使用RETI指令
RETI指令包含两个功能:
首先将相应的优先级状态触发器清0,以开放同级别中断源的中断请求;
其次,从堆栈区把断点地址弹出给程序计数器PC。
注意:不能用RET指令代替RETI指令。5.4 中断应用举例5.4 中断应用举例主要内容
1、中断程序的组织结构
2、中断的初始化过程
3、中断服务程序的设计
4、中断程序举例5.4 中断应用举例5.4 中断应用举例 一、中断程序安排
1、 主程序
MCS-51单片机复位后,(PC)=0000H,主程序只分配0000H-0002H共3个单元。经常在0000H单元设置一条LJMP指令,转向主程序的入口处。而真正的主程序一般安排在中断区域之后。
2、 各中断服务程序
每个中断服务程序在固定的位置由系统分配相邻的8个单元用于存储程序。5.4 中断应用举例5.4 中断应用举例 程序组织的一般结构:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_0
…
ORG 0030H
MAIN: ...... ;主程序区
...... ;进行初始化
SJMP $ ;等待中断
INT_0: ...... ;外部中断0服务子程序
......
RETI5.4 中断应用举例5.4 中断应用举例 二、中断初始化步骤
89C52单片机中,共有6个中断源,中断的初始化主要是对由5个特殊功能寄存器TCON、T2CON、SCON、IE和IP的设置。
中断初始化部分一般放在主程序中。
5.4 中断应用举例5.4 中断应用举例 三、中断服务程序流程设计
MCS-51结束到中断请求后,在条件满足的情况下,响应中断并转到对应的中断服务程序入口处执行 。中断程序主要由如下所示几部分组成:
1、保护现场
中断响应后,系统已自动将断点进行保护。
保护现场,主要针对中断程序中的寄存器和存储单元。其位置在中断服务程序前段。5.4 中断应用举例5.4 中断应用举例 2、关中断和开中断
89C52允许中断嵌套。为了在保护现场或恢复现场时,由于CPU响应其它中断请求,而使现场破坏,一般在保护和恢复现场时,CPU不响应外界的中断请求,即关中断。
在保护现场和恢复现场前,关中断;在保护现场和恢复现场后,再根据需要使CPU开中断。
思考:如果允许中断嵌套,什么时间关中断和开中断?5.4 中断应用举例5.4 中断应用举例 3、中断请求撤除
CPU响应某中断请求后,在中断返回前,应该撤消该中断请求。中断请求撤除方法如下:
定时器0、1溢出中断请求的撤除:允许中断的情况下,响应中断后,硬件会自动清除中断请求标志TFx。
定时器/计数器2请求的撤除:T2中断请求标志位TF2和EXF2不能自动复位,须软件复位。
串行口中断的撤除:串行口中断请求标志位TI和RI,必须软件复位。5.4 中断应用举例5.4 中断应用举例 外部中断的撤除:外部中断为边沿触发方式时,响应中断后,硬件自动清除IE0或IE1。
外部中断为电平触发方式时。响应中断后,硬件会自动清除IE0或IE1。但由于加到或引脚的外部中断请求信号并未撤除,中断请求标志IE0或IE1会再次被置1,所以在CPU响应中断后应立即撤除或引脚上的低电平。
一般采用加一个D触发器和几条指令的方法来解决这个问题。5.4 中断应用举例5.4 中断应用举例 4、中断源的识别
串行口中断:接收请求标志RI和发送中断请求标志位TI共用中断入口地址(0023H),中断允许位ES和中断优先级选择位PS。
定时器/计数器2:中断请求标志TF2和EXF2,共用一个中断矢量地址(002BH),中断允许位ET2和中断优先级选择位PT2。
在中断服务程序中注意区分是哪种中断引起的中断请求,并清除其中断请求标志。5.4 中断应用举例5.4 中断应用举例 5、恢复现场
在结束中断服务程序,返回断点处前要恢复现场。
6、中断返回
当CPU执行到RETI指令时,将当前栈顶内容弹出到PC,恢复断点。
注意:中断服务程序的最后一条指令,必须为RETI返回指令,不能为RET指令。5.4 中断应用举例5.4 中断应用举例例5-3 如图5-9所示,将P1口的P1.4~P1.7作为输入位,P1.0~P1.3作为输出位。
要求利用89C52将开关所设的数据读入单片机内,并依次通过P1.0~P1.3输出,驱动发光二极管,以检查P1.4~P1.7输入的电平情况(若输入为高电平则相应的LED亮)。
要求采用中断边沿触发方式,中断一次,完成一次读/写操作。5.4 中断应用举例5.4 中断应用举例5.4 中断应用举例5.4 中断应用举例 分析:5-9中,用外部中断0,中断请求从P3.2输入,并采用去抖动电路。当P1.0~P1.3的某一位输出为0时,相应的发光二极管就会发光。当开关S1来回拨动一次时,将产生一个下降沿信号,发出中断请求。中断服务程序的入口地址为0003H。
C语言程序 :
#include
void main( )
{
EX0=1; //允许外部中断0中断5.4 中断应用举例5.4 中断应用举例 IT0=1; //选边沿触发方式
EA=1; //CPU开中断
while (1); //等待中断
}
void int0_int(void) interrupt 0
{
unsigned char data d;
P1=0xf0; //设P1.4~P1.7为输入
d=P1; //取开关数
P1=~(d>>4); //驱动LED发光
}5.4 中断应用举例5.4 中断应用举例汇编程序:
ORG 0000H
SJMP MAIN ;上电,转向主程序
ORG 0003H ;外部中断0入口地址
SJMP INSER ;转向中断服务程序
ORG 0030H ;主程序
MAIN:
SETB EX0 ;允许外部中断0中断
SETB IT0 ;选择边沿触发方式
SETB EA ;CPU开中断5.4 中断应用举例5.4 中断应用举例HERE:
SJMP HERE ;等待中断
INSER: ;中断服务程序
MOV A
MOV P1,#0F0H ;设P1.4~P1.7为输入
MOV A,P1 ;取开关数据
SWAP A ;A的高、低四位互换
CPL
MOV P1,A ;输出驱动LED发光
RETI ;中断返回
END本章小结本章小结 本章介绍了中断的基本概念,中断系统的逻辑结构,中断控制的过程、以及中断的应用。
89C52单片机内部有6个中断源,它们分别是外部中断0、外部中断1、定时器0,1,2和串行口。对应8个中断标志,6个中断允许和优先级控制位。
不同中断源有不同的中断入口地址,读者在编制程序时一定要注意正确区分中断源,从而保证中断功能的正确实现。