版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用
第5章MCS-51单片机中断系统第5章MCS-51单片机中断系统目录5.1中断概述5.2中断系统结构及控制5.3中断响应过程及处理过程5.4中断应用举例
本章主要讨论MCS-51单片机中断系统。 内容主要有:MCS-51单片机中断系统结构、中断控制、中断优先级、中断处理过程,以及中断的应用。 通过本章的学习,应该理解中断系统结构、中断响应的条件和中断处理过程; 掌握中断控制、中断优先级,灵活的应用中断解决实际问题。第5章MCS-51单片机的中断系统5.1中断概述主要内容5.1.1微机的输入/输出几种控制方式5.1.2中断的相关概念5.1.1微机的输入/输出几种控制方式
单片机系统中,CPU和外部设备之间不断进行信息的传输。通常CPU和外设之间的信息传送方式有以下几种:
程序控制方式 中断方式 直接存储器存取(DMA)方式5.1.1微机的输入/输出方式
1、程序控制方式
可以分为以下两种方式。
(1)无条件传送方式
外设始终处于就绪状态,CPU不必查询外设的状态,直接进行信息传输,称为无条件传送方式。 此种信息传送方式只适用于简单的外设。如开关和数码段显示器等。5.1.1微机的输入/输出方式
(2)条件传送方式
CPU通过执行程序不断读取并测试外部设备状态,如果输入设备处于准备好状态或输出设备为空闲状态时,则CPU执行传送信息操作。由于条件传送方式需要CPU不断地查询外部设备的状态,然后才进行信息传送,所以也称为“查询式传送”。5.1.1微机的输入/输出方式 2、中断方式
外部设备与CPU之间以中断信号作为数据交换的控制信号。 当外部设备需要与CPU进行数据交换时,由接口部件向CPU发出一个请求信号,CPU响应这一中断请求后,在中断服务程序中完成一个字节或多个字节的信息交换。
中断方式具有并行工作、实时传输、充分利用CPU效率等特点。中断传送仍由CPU通过程序来传送,每次都要执行指令进行断点、现场的保护和恢复。对于高速I/O,就显得速度太慢了。5.1.1微机的输入/输出方式 3、DMA方式(直接存储器存取)
DMA控制方式主要用于存储器和外设之间直接传送、块传输。
DMA请求总线:当某一外部设备需要输入/输出一批数据时,向DMA控制器发出请求,DMA控制器接收到这一请求后,向CPU发出总线请求信号。5.1.1微机的输入/输出方式
DMA控制数据传输:CPU响应DMA的请求,把总线使用权交给DMA控制器,DMA将外设数据读入、并直接写入存储器,或将数据从存储器读出并直接送给外设。传送过程不需要CPU参与。
DMA释放总线:当一批数据传送后,DMA控制器再向CPU发出“结束总线请求”,CPU响应请求,收回总线使用权。
DMA方式速度高、效率高,可以与CPU并行工作。 1、中断的概念
中断是一种过程。指CPU正常执行的程序被某种临时发生的事件所打断,当前程序暂时停止执行,CPU转去处理所发生的事件,处理完毕再返回继续执行暂时停止的程序,这一过程称为中断。5.1.2中断的相关概念
2、中断源引起CPU中断的设备和事件就是中断源。
3、中断请求中断源向CPU发出的请求处理信号,即中断请求或中断申请。
4、中断响应
CPU暂时中止正在处理的事情,转去处理突发事件的过程,称为中断响应。5.1.2中断的相关概念
5、其他概念
中断系统:实现中断功能的部件称为,又称中断机构。
中断服务程序:CPU响应中断后,处理中断事件的程序。
断点:CPU响应中断请求,转去执行中断服务程序时的PC值,即为断点地址。
中断返回:CPU执行完中断服务程序后回到断点的过程。5.1.2中断的相关概念
6、中断的功能中断是计算机的一项重要技术,计算机引入中断后,大大提高了它的工作效率和处理问题的灵活性,主要功能有以下几个方面。 使CPU与外设同步工作 实现实时处理 故障及时处理5.1.2中断的相关概念
5.2中断系统的结构及控制主要内容5.2.1MCS-51的中断结构5.2.2MCS-51的中断源5.2.3与中断相关的寄存器5.2.1MCS-51单片机的中断结构
中断系统构成:增强单片机主要由5个特殊功能寄存器、相关硬件查询电路等组成。有6个中断源,两个中断优先级。
特殊功能寄存器主要用于:控制中断的开放和关闭、保存中断信息、设置中断的优先级别。
硬件查询电路主要用于:判定6个中断源的优先级别。
MCS-51增强型单片机的中断结构如图5-2所示。
中断系统结构(编程结构) 主要由中断源、中断标志寄存器、中断控制寄存器、优先级寄存器等构成。中断源中断标志寄存器中断优先级寄存器中断控制寄存器CPU图5-2增强型单片机的中断系统结构IE0PX0EAEX0110ET0EX1ET1ESIT0=0TF0IE11TF1TIRIT0T1INT1TXRXTCONIEIP各中断源允许优先级INT0+PT010PX110PT110PS10PT210ET2+TF2EXF2T2T2EX总允许中断矢量地址中断向量地址硬件查询中断信号PCPC自然优先级自然优先级高级中断请求低级中断请求IT0=1IT1=0IT1=15.2.2MCS-51中断源 MCS-51中断系统主要是对6个中断源进行管理,依次为: 外部中断0(INT0,P3.2引脚) 外部中断1(INT1,P3.3引脚) 定时器/计数器0溢出中断 定时器/计数器1溢出中断 定时器/计数器2溢出中断 串行口中断
CPU主要是通过标志寄存器、控制寄存器、优先级寄存器对中断源进行管理。5.2.2MCS-51中断源
中断源中断入口外部中断00003H定时器/计数器0000BH外部中断10013H定时器/计数器1001BH串行口0023H定时器/计数器2002BH5.2.3与中断相关的寄存器
(1)与中断标志相关的寄存器主要有: 定时器/计数器T0、T1控制寄存器TCON
定时器/计数器2控制寄存器T2CON(第6章介绍) 串行口控制寄存器SCON
(2)中断控制寄存器:TCON、IE
(3)中断优先级寄存器:IP5.2.3与中断相关的寄存器 1、串行口控制寄存器*SCON
字节地址98H。可以位寻址,
格式如下:TI(SCON.1):串行口发送中断标志。串行口发送完一帧后,由硬件置1。响应中断后,必须用软件清0。 如:CLRTIRI(SCON.0):串行口接收中断标志。串行口接收完一帧后,由硬件置1。响应中断后,必须用软件清0。 如:CLRRI*SCON(98H)D7D6D5D4D3D2D1D0TIRI5.2.3与中断相关的寄存器 2、T0、T1的控制寄存器*TCON
TCON格式如下:*TCON(88H)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON可位寻址。复位后TCON=00H。TF1(TCON.7):T1溢出标志位 当T1计满溢出时,由硬件置位; 中断响应后自动清0。TF0:T0溢出标志位
功能同TF1。5.2.3与中断相关的寄存器IT1:外中断1触发方式设置位
IT1=0,外中断1为低电平触发
CPU在每一个机器周期的S5P2期间对P3.3引脚采样,若P3.3为低电平,则使IE1置1,否则IE1清0。
IT1=1,外中断1为下降沿触发
CPU在每一个机器周期的S5P2期间对P3.3引脚采样,若上一个机器周期检测为高电平,紧挨着的下一个机器周期为低电平,则使IE1置1。
IT0:外中断0触发方式控制位。功能同IT15.2.3与中断相关的寄存器IE1:外中断1中断请求标志位 外部中断1引脚有请求信号置1;
IE1的清0问题:与外中断的触发方式有关
若低电平触发,则P3.3引脚为高电平自动 对IE1清0,与CPU响应与否无关; 若下降沿触发,则CPU响应中断后,由硬 件自动对IE1清0。IE0:外部中断0中断请求标志位
功能同IE1。5.2.3与中断相关的寄存器 3、中断允许寄存器*IE可以位寻址,其格式如下:EA(IE.7):中断允许总控位。也叫CPU中断控制位
EA=0,屏蔽所有的中断请求;
EA=1,开放中断总控制位。其它各位:T2ST1EX1T0EX0
设置为0,禁止相应的中断; 设置为1,允许相应的中断。*IE(A8H)D7D6D5D4D3D2D1D0EA—ET2ESET1EX1ET0EX0各位对应:
T2ST1EX1T0EX05.2.3与中断相关的寄存器例5-1
假设允许INT0、INT1、T0、T1中断,试设置IE的值。解:(1)用C语言①字节方式操作:
IE=0x8f;②C语言位方式操作:
EX0=1; //允许外部中断0中断
ET0=1; //允许定时/计数器0中断
EX1=1; //允许外部中断1中断
ET1=1; //允许定时/计数器1中断
EA=1 //开总中断控制5.2.3与中断相关的寄存器(2)用汇编语言①字节方式操作:
MOVIE,#8FH
②位方式操作指令:
SETBEX0 ;允许外部中断0中断
SETBET0 ;允许定时/计数器0中断
SETBEX1 ;允许外部中断1中断
SETBET1 ;允许定时/计数器1中断
SETBEA ;开总中断控制位5.2.3与中断相关的寄存器4、中断优先级控制寄存器*IPMCS-51增强单片机的6个中断源,每个都有两个优先级:高优先级和低优先级。
IP复位后为00H。其格式如下图所示:
设置为0,相应中断为低优先级; 设置为1,相应中断为高优先级*IP(B8H)D7D6D5D4D3D2D1D0——PT2PSPT1PX1PT0PX0
各位对应:
T2ST1EX1T0EX05.2.3与中断相关的寄存器
中断优先级规则:(1)同优先级中断优先规则
①多个中断同时请求响应次序(即优先次序):
外中断0T0外中断1T1串行口T2
②多个中断不同时请求:不能够嵌套中断(2)不同优先级中断优先规则
①多个中断同时请求:先响应高级中断请求
②多个中断不同时请求:高级中断请求能够打断低级中断服务,实现中断嵌套。5.2.3与中断相关的寄存器
表5-1同优先级中断顺序中断源优先顺序外部中断0定时器/计数器0外部中断1定时器/计数器1串行口中断定时器/计数器2最高最低5.2.2MCS-51单片机的中断源思考:当系统正在处理定时器0中断服务程序时,定时器1和外部中断0有中断请求,描述CPU的中断处理过程?图5-2增强型单片机的中断系统结构IE0PX0EAEX0110ET0EX1ET1ESIT0=0TF0IE11TF1TIRIT0T1INT1TXRXTCONIEIP各中断源允许优先级INT0+PT010PX110PT110PS10PT210ET2+TF2EXF2T2T2EX总允许中断矢量地址中断向量地址硬件查询中断信号PCPC自然优先级自然优先级高级中断请求低级中断请求IT0=1IT1=0IT1=15.2.2MCS-51单片机的中断源例5-2
设串行口和三个定时器T0、T1、T2的中断为高优先级,两个外部中断为低优先级,试设置IP的值。解:C语言程序(1)按字节操作
IP=0x3a; //0x3a:00111010(2)按位操作PX0=0; PX1=0;PT0=1; PT1=1;PS=1; PT2=2;5.2.2MCS-51单片机的中断源
汇编语言程序:(1)使用字节操作指令:
MOVIP,#3AH(2)使用位操作指令:CLR PX0 ;设置外部中断0为低级中断CLR PX1 ;置外部中断1为低级中断SETB PT0 ;置定时器/计数器0为高级中断SETB PT1 ;置定时器/计数器0为高级中断SETB PS ;置串行口中断为高优先级SETB PT2 ;置定时器/计数器2为高级中断
由于复位后IP=00H,外部中断在此可以不设置。5.3中断响应及处理过程本节内容5.3.1中断响应过程5.3.2中断处理和返回过程
中断处理过程一般分为三个阶段:中断响应、中断处理、中断返回。5.3.1中断响应过程
讨论:响应条件、响应过程、响应时间。一、中断响应条件(1)中断源有中断请求;(2)中断总允许位EA为1;(3)相应中断源的中断控制位为1; 在满足以上条件的基础上,有可能响应中断。以上是中断响应的基本条件、必要条件。若有下列任何一种情况存在,其中断请求不能响应。
5.3.1中断响应的过程
若有下列任何一种情况,其中断请求不能响应。
可能会遇到的情况:(1)CPU正在执行同级或高优先级的中断服务程序;(2)正在执行的指令尚未执行完;(3)正在执行RETI指令,或者对IE、IP进行读/写操作,则这些执行完后,需要再执行一条指令,才能响应中断请求。 前者是必须清楚的,而后者可以不予理会,不必考虑。5.3.1中断响应的过程二、中断响应过程 在中断响应过程中,MCS-51进行如下操作:
1、查询中断源并置标志
CPU在每个机器周期的S5P2期间,顺序对中断源查询、置中断请求标志。
2、查询中断标志
CPU在每个周期的S6状态,按优先级顺序查询中断标志,但本周期所置标志下次才能查到。5.3.1中断响应的过程
3、响应中断 在查询中断标志后(也即请求后)的下一周期,开始按优先级顺序进行中断处理。 中断响应过程的操作步骤:
PC的内容(即断点地址)进栈。先低位地址,后高位地址。硬件自动生成长调用指令LCALLaddr16,addr16为各中断源的中断程序入口地址。 将中断源的中断入口地址装入程序计数器PC,执行中断服务程序。5.3.1中断响应过程三、中断响应的时间 一般来说,中断的响应时间最短为3个机器周期,最长为8个机器周期。
一般中断请求标志位查询占1个机器周期。而机器周期又恰好是指令的最后一个机器周期。执行此指令后,CPU将响应中断,产生硬件长调用指令。
长调用LCALL指令需要2个机器周期。这样,中断响应时间为3个机器周期。5.3.1中断响应过程
响应时间最长的情况(8周期):
CPU正在执行的是RETI指令、或访问IP、IE指令;
如果其后恰好是4个机器周期的指令MUL、或DIV)。 加上执行长调用指令LCALL所需2个机器周期,则需要8个机器周期。如果中断请求遇到执行高级中断服务程序,其响应时间会更长。查询中断标志+执行长调用LCALL+RETI等指令+4个机器周期的指令12145.3.2中断处理和返回过程一、中断服务程序 一般包括四部分内容:
保护现场(用PUSH使相关寄存器进栈,可关中断)
中断处理程序 恢复现场(用POP使相关寄存器出栈,可开中断)
中断返回(RETI)
现场:是指中断发生时单片机中存储单元、寄存器、特殊功能寄存器中的数据或标志位等。 例如A、B、Rn、PSW、DPTR等5.3.2中断的处理和返回过程保护的方法可以有以下几种:
⑴进栈(使用PUSH、POP)
⑵切换工作寄存器组
⑶暂存内部存储器单元 多使用堆栈方法,PUSH、POP成对使用。
5.3.2中断处理和返回过程
二、中断返回 使用RETI指令
RETI指令包含两个功能: (1)将相应的优先级状态触发器清0,以开放同级或低级的中断请求; (2)从堆栈把断点地址弹出,送给程序计数器PC,返回中断前指令执行。 注意:不能用RET指令代替RETI指令。5.4中断应用举例主要内容1、中断程序的组织结构2、中断的初始化过程3、中断服务程序的设计4、中断程序举例5.4中断应用举例
一、程序组织的一般结构:
ORG 0000H LJMP MAIN
ORG 0003H LJMP INT_EX0 … ORG 0030HMAIN: ...... ;主程序区 ...... ;进行初始化 SJMP$ ;等待中断INT_EX0: ...... ;外部中断0服务子程序
......
RETI5.4中断应用举例
二、中断初始化的内容 在中断之前,需要对相关特殊功能寄存器设置,主要操作有: 设置中断优先级 设置中断触发方式(外中断) 清除中断请求标志(对串行口、T2) 开中断源中断 开中断总控制位5.4中断应用举例
三、中断处理程序设计 保护、恢复现场时关闭中断对于低优先级中断,有可能嵌套高优先级中断。在保护现场或恢复现场时,总是不希望发生中断,因此在保护和恢复现场时关闭中断。 方法是:EA清0(关CPU中断)在保护现场后、恢复现场后,开中断。
方法是:EA置1(开CPU中断)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中断应用举例双稳态电路去抖动S1与1连输出高,与2连则输出低1074LS075.4中断应用举例
分析:在图5-9中,用外部中断0,中断请求从P3.2输入,并采用双稳态电路去抖动。当P1.0~P1.3的某一位输出为0时,相应的发光二极管就会发光。当开关S1来回拨动一次时,将产生一个下降沿信号,发出中断请求。
C语言程序:#include<reg52.h>voidmain(void){ IT0=1; //设置边沿触发方式
EX0=1; //允许外部中断0中断
EA=1; //开CPU中断
while(1); //等待中断}5.4中断应用举例voidmain(void){ IT0=1; //设置边沿触发方式
EX0=1; //允许外部中断0中断
EA=1; //开CPU中断
while(1); //等待中断}voidint0_int(void)interrupt
0
{ unsigned char data d; P1=0xff; //设P1.4~P1.7为输入
d=P1; //取开关数
P1=~(d>>4); //驱动LED发光}5.4中断应用举例汇编程序: ORG 0000H SJMP MAIN ;上电,转向主程序
ORG 0003H ;外部中断0入口地址
SJMP INSER ;转向中断服务程序 ORG 0030H ;主程序MAIN: SETB EX0 ;允许外部中断0中断 SETB IT0 ;选择边沿触发方式 SETB EA ;CPU开中断
SJMP $ ;等待中断5.4中断应用举例INSER: ;中断服务程序 MOVP1,#0F0H ;设P1.4~P1.7为输入 MOVA,P1 ;取开关数据 SWAPA ;A的高、低四位互换
CPL A ;A的值取反 MOV P1,A ;输出驱动LED发光 RETI ;中断返回 END5.4中断应用举例例5-4对图5-10所示的单片机系统进行编程,实现系统的故障显示。当系统的各部分正常工作时,4个LED全不亮,当有某个部分出现故障时,使相应的发光二极管亮。
40025.4中断应用举例C语言程序清单:
#include<reg52.h>sbitP1_0=P1^0;sbitP1_1=P1^1;voidmain(){ P1=0x55; //P1.0,P1.2,P1.4,P1.6 //为输入,其他引脚输出
EX0=1; //允许外部中断0中断
IT0=1; //选择边沿触发方式
EA=1; //CPU开中断
while(1); //等待中断}sbitP1_2=P1^2;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;5.4中断应用举例voidint0_serv()interrupt0{ if(P1_0) P1_1=1; if(P1_2) P1_3=1; if(P1_4) P1_5=1; if(P1_6) P1_7=1;}中断服务程序也可写为:voidint0_serv()interrupt0{ unsignedchardatad; P1=0x55; d=P1; P1=0x55︱(d<<1);}
5.4中断应用举例汇编程序清单:
ORG 0000H LJMP MAIN ;上电,转向主程序
ORG 0003H ;外部中断0入口地址
LJMP INSER ;转向中断服务程序MAIN: MOV SP,#0DFH ;设置堆栈指针
ANL P1,#55H ;P1.0,P1.2,P1.4,P1.6
;为输入,其他引脚为输出
SETB EX0 ;允许外部中断0中断
SETB IT0 ;选择边沿触发方式
SETB EA ;CPU开中断 SJMP $ ;等待中断
5.4中断应用举例INSER: JNB P1.0,L1 ;查询中断,P1.0=0,转L1 SETB P1.1 ;是P1.0引起的中断, ;使相应的二极管亮L1: JNB P1.2,L2 ;继续查询
SETB P1.3 ;是P1.2引起的中断
L2: JNB P1.4,L3 SETB P1.5 ;是P1.4引起的中断L3: JNB P1.6,L4
SETB P1.7 ;是P1.6引起的中断L4: RETI ;中断返回 END
中断的扩展可以中断和查询结合的方法把其中最高级别的中断源直接接到MCS-51的一个外部中断请求源IR0输入端,其余的外部中断请求源IR1~IR4用“线与”的办法连到MCS-51的另一个外中断源输入端,同时还连到P1口。
5个外部中断源的排队顺序依此为:IR0~IR4。
ORG0013H;的中断入口
LJMPINTR;
┇INTR: PUSHPSW ;保护现场
PUSHACC JBP1.0,IR1;P1.0高,IR1有请求
JBP1.1,IR2;P1.1高,IR2有请求
JBP1.2,IR3;P1.2高,IR1有请求
JBP1.3,IR4;P1.4高,IR4有请求INTIR: POPACC ;恢复现场
POPPSWRETI;中断返回
IR1: IR1的中断处理程序
AJMPINTIR;
IR2:IR2的中断处理程序
AJMPINTIR;
IR3: IR3的中断处理程序
AJMPINTIR;
IR4: IR4的中断处理程序
AJMPINTIR;【例】现有5个外中断源EX1、EX20、EX21、EX22和EX23,高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。
解:ORG 0000H ;复位地址LJMP MAIN
;转主程序ORG 0003H ;中断入口地址LJMP PINT0
;转中断服务程序ORG 0013H ;中断入口地址LJMP PINT1
;转中断服务程序
ORG 0100H
;主程序首地址MAIN:MOV SP,#60H ;置堆栈指针
ORL TCON,#05H ;置INT0、INT1为边沿触发方式
SETB PX0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年因材施教成语故事教学启发教案
- 2026年危化品泄漏应急处置课件(完整版)
- 2025年成人高考专升本《医学综合》模拟试题及答案
- 电力线路的接线方式
- 2026 年元宵节赏花灯猜灯谜民俗科普课件
- 2026 年白衣医者无私大爱主题宣讲课件
- 骨科医院2026年护理理论测试试题及答案
- 拍卖业务员发展趋势测试考核试卷含答案
- 葡萄酒酿造工创新实践考核试卷含答案
- 中风护理试题及答案呈现
- 商场基础营运培训课件
- 电锅炉-安装工艺
- 行程开关知识课件
- 拆除临时用电施工方案
- 《铁路调车工作》课件
- 小班语言活动秋天的颜色
- 履带吊安拆装方案-天宫庄园站
- 事业编聘用合同
- 认知中心建设方案
- 世界盐产业地理分布与区域特点
- 残联招聘笔试试题(答案)
评论
0/150
提交评论