单片机MCS-51的中断系统_第1页
单片机MCS-51的中断系统_第2页
单片机MCS-51的中断系统_第3页
单片机MCS-51的中断系统_第4页
单片机MCS-51的中断系统_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章MCS-51的中断系统4.1中断的概念4.2MCS-51中断系统的结构4.3中断请求源4.4中断控制4.5中断响应4.6外部中断的响应时间4.7外部中断的触发方式选择4.8中断请求的撤销4.9中断服务程序的设计4.10多外部中断源系统设计教学目标

1.介绍MCS-51中断系统及中断控制;2.介绍中断处理的过程;3.介绍中断应用程序的编程。重点难点1.熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念;2.掌握51中断入口地址和各中断控制寄存器含义及应用:包括TCON、SCON、IE和IP;3.掌握中断初始化和中断服务程序的编制。

MCS-51有很强的I/O接口扩展能力,I/O外设扩展后,单片机要与各种形式的外设相连,这些外设的结构形式、信号种类与大小、工作速度的快慢相差很大,这就需要研究单片机与外设交换数据的方法。目前CPU与外设交换信息通常有以下几种形式:输入/输出的控制方式一、无条件传送方式CPU总是认为外设在任何时刻都处于“准备好”的状态。这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。此种方法很少使用。二、查询方式传送

也称程序控制法,先查询I/O设备当前状态,若准备就绪,则交换数据,否则循环查询状态。优点:通用性好,可以用于各类外设和CPU间的数据传送。缺点:CPU在完成一次数据传送后要等待很长时间才能进行下一次的传送。在等待过程中,CPU不能进行其他操作,所以效率比较低。 三、中断方式传送

大多数时间计算机与外设并行工作,计算机不必因等待而浪费资源。当外设准备就绪,向CPU发出中断请求信号。CPU暂停当前程序,执行I/O操作。当I/O操作结束,CPU仍继续被中断的工作。4.1中断的概念执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回中断系统:实现中断功能的部件。中断服务程序:中断之后所执行的处理程序,原来运行的程序称为主程序。断点:主程序被断开的位置(地址)。中断源:向CPU发出中断请求的来源。中断请求:中断源向CPU提出的处理请求,又称中断申请。

中断的相关概念实现实时控制处理。提高处理故障的能力;解决CPU和外设之间的速度匹配问题,提高CPU的效率;实现人机对话。一般由键盘、按钮等发出中断请求,当CPU响应中断后,在中断服务程序中实现人机对话。中断方式的特点4.2MCS-51中断系统的结构

5个中断源;

2个中断优先级,可实现两级中断嵌套;中断使能可编程控制;中断优先级可编程控制;复位后,所有中断被禁止,且为低优先级。MCS-51的中断系统结构框图4.3中断请求源1.外部中断类

由外部原因引起的:/INT0——外部中断0请求信号。由P3.2引脚输入,中断请求标志为IE0。/INT1——外部中断1请求信号。由P3.3引脚输入,中断请求标志为IE1。

MCS-51的中断源可分为三类:外部中断、定时/计数器溢出中断和串行口中断。

2.定时/计数中断类

定时/计数中断是为满足定时或计数溢出处理的需要而设置的。在定时方式下,脉冲信号在单片机芯片内部发生,无需在芯片上设置引入端;但在计数方式时,中断源由单片机芯片外部引入。

定时器/计数器T0溢出中断请求:中断请求标志为TF0。

定时器/计数器T1溢出中断请求:中断请求标志为TF1。

3.串行口中断类

串行口中断为串行通信的需要而设置的。

RI或TI——串行口中断请求标志。各中断源对应的中断服务程序入口地址:

中断源入口地址

外部中断00003H

定时器T0中断 000BH

外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H

中断请求标志中断源申请中断时,要将相应的中断请求标志置位。CPU查询这些中断标志位状态,以决定是否响应中断。MCS-51中断标志位锁存在定时器控制寄存器TCON和串行口控制寄存器SCON中。1.定时器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT08FH8EH8DH8CH8BH8AH89H88HD7D6D5D4D3D2D1D0TCON位地址字节地址:88HIT0和IT1:外部中断请求信号触发方式控制位IT0(或IT1)=0:电平触发,INT0(或INT1)低电平有效;IT0(或IT1)=1:边沿触发,引脚INT0(或INT1)上的电平由高到低负跳变有效;IT0(或IT1)位可由用户软件置1或清0。各控制位的含义IE0和IE1:外部中断请求标志位若IT0=0(或IT1=0),每个机器周期的S5P2采样INT0(或INT1),若INT0=0则IE0(或IE1)由片内硬件自动置1;当IT0=1(或IT1=1)时,第一个机器周期采样到INT0(或INT1)为高电平,第二个机器周期为低电平,则IE0(或IE1)=1。IE0(或IE1)=1表示外部中断正在向CPU申请中断,当CPU响应中断,转向中断服务程序时,由硬件自动清“0”IE0(或IE1)。TF0和TF1:定时器/计数器溢出中断请求标志位T0(或T1)启动计数后,加1计数,当最高位发生计数溢出时,TF0(或TF1)由片内硬件自动置1,向CPU请求中断;当完成中断响应,并转向中断服务程序时,由片内硬件自动清0。该标志位也可用于查询方式(非中断方式),即用户程序查询该位状态,判断是否应转向对应的处理程序段。待转入处理程序后,必须由软件清0。注意:MCS-51复位后,TCON被清0。2.串行口控制寄存器SCONSCON的字节地址为98H,可以位寻址:位地址是9FH~98H。位序D7D6D5D4D3D2D1D0位地址9FH9EH9DH9CH9BH9AH99H98H位符号SM0SM1SM2RENTB8RB8TIRISCON为串行口控制寄存器,其低2位锁存串行口的接收中断和发送中断标志RI和TI。TI(SCON.1):串行口发送中断请求标志位。当CPU通过串行口每发送完一帧数据,TI由硬件自动置1。CPU响应中断时,不能自动清除TI,在转向中断服务程序后必须由软件清0。RI(SCON.0):串行口接收中断请求标志位。当允许串行口接收数据时,每接收完一帧数据,RI由硬件自动置1。同样,RI必须在中断服务程序中用软件清0。TI和RI为何必须软件清0?

因为串行口无论是发送中断还是接收中断,中断向量地址是惟一的,即0023H。待转向中断服务程序后,必须用软件查询TI或RI的状态,方可判断是串行发送中断还是串行接收中断,从而转向不同的处理程序段。这就是TI和RI不能由片内硬件自动清0,而必须由软件清0的原因。4.4中断控制1.中断允许寄存器IECPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。IE的字节地址是A8H,可位寻址,位地址为AFH~A8H。位序D7D6D5D4D3D2D1D0位地址AFHAEHADHACHABHAAHA9HA8H位符号EA——ESET1EX1ET0EX0中断允许寄存器IE的格式EA(IE.7):中断允许总控制位。EA=1,CPU开放所有中断。对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制位的状态。这就是所谓的两级控制;EA=0,屏蔽所有的中断请求。ES(IE.4):串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。ET1(IE.3):定时器1中断允许位。ET1=1,允许定时器1中断;ET1=0,禁止定时器1中断。

中断允许寄存器IE各位含义:EX1(IE.2):外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。ET0(IE.1):定时器0中断允许位。

ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断。EX0(IE.0):外部中断0中断允许位。

EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。单片机响应中断后不会自动关中断,因此在转到中断服务程序后,应用软件完成关闭或打开中断操作。8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断。IE寄存器的设置位操作指令:

SETBBIT CLRBIT字节操作指令:

MOVIE,#DATA ANLIE,#DATAORLIE,#DATAMOVIE,A例:假设允许片内定时器/计数器中断,禁止其他中断。试根据假设条件设置IE的相应值。解:(IE)=10001010B=8AH(a)用字节操作指令 MOVIE,#8AH或MOVA8H,#8AH

(b)用位操作指令 SETBET0

;定时器/计数器0允许中断 SETBET1

;定时器/计数器1允许中断 SETBEA

;CPU开中断2.中断优先级控制寄存器IPMCS-51单片机具有高、低两个中断优先级。各中断源优先级由IP寄存器有关位设置。每个中断请求源均可编程为高优先级中断或低优先级中断。IP寄存器的字节地址为B8H,可以位寻址,位地址为BFH~B8H。位序D7D6D5D4D3D2D1D0位地址BFHBEHBDHBCHBBHBAHB9HB8H位符号———PSPT1PX1PT0PX0中断优先级控制寄存器IP的格式中断优先级寄存器IP各控制位的含义①PS—串行口中断优先级控制位②PT1—定时器/计数器T1中断优先级控制位③PX1—外部中断1中断优先级控制位④PT0—定时器/计数器T0中断优先级控制位⑤PX0—外部中断0中断优先级控制位若某控制位为1,则相应的中断源规定为高级中断;反之为0,则相应的中断源规定为低级中断。当系统复位后,IP低5位全部清“0”,将所有中断源设置为低优先级中断。中断优先级控制中的特殊情况(1)自然优先级(2)中断嵌套(1)自然优先级当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。其优先级顺序排列如

下图

所示。中断优先级排列顺序中断源

同级内的中断优先级外部中断0中断高级定时器/计数器T0溢出中断外部中断1定时器/计数器T1溢出中断串行口中断低级CPU在执行主程序低级中断请求响应低级中断请求CPU执行低级中断服务程序高级中断请求响应高级中断请求CPU执行高级中断服务程序返回低级中断程序返回主程序(2)两级中断嵌套不同级中断源同时申请中断时:先高后低同一级的中断源同时申请中断时:事先规定处理低级中断又收到高级中断申请时:停低转高处理高级中断又收到低级中断申请时:高不睬低MCS-51对中断的处理原则为了实现上述原则,中断系统内部设有两个用户不能寻址的优先级生效触发器:高优先级生效触发器和低优先级生效触发器。例:设置IP初值,使8031的2个外部中断源为高优先级,其它中断源为低优先级。解:(IP)=00000101B=05H (a)用字节操作指令

MOVIP,#05H或MOV0B8H,#05H(b)用位操作指令

SETBPX0 SETBPX1 CLRPS CLRPT0 CLRPT14.5中断响应及处理过程中止现行程序,保护断点转入中断服务程序入口保护现场中断服务恢复现场中断返回(RETI)中断处理流程图中断响应中断返回中断处理中断请求CPU响应中断中断请求一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。中断请求是中断源向CPU发出请求中断的信号。

一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向CPU发出信号,请求CPU中断。一、中断请求1.CPU的中断响应条件

有中断源发出中断申请;

CPU开中断,即中断总允许位EA=1;申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断;无同级或更高级中断正在被服务。

二、中断响应

中断响应是在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。2.中断标志位的查询单片机在每个机器周期的S5P2状态根据中断请求信号的状态置位各自的中断请求标志。在下一个机器周期的S6状态下,按中断优先级顺序对中断请求标志位进行查询。如果查询到有的标志位为1,则表明有中断请求发生,因此紧接着的下一个机器周期的S1状态开始进入中断响应周期。中断查询在每个机器周期都要重复执行,但如果遇到下列条件之一,虽然中断标志位为1,也不能立即产生中断:CPU正在处理同级或高一级的中断;查询周期不处于执行当前指令的最后一个机器周期。这样是为了使当前指令执行完毕后才响应中断,以确保当前指令的完整执行;当前正在执行返回(RETI)指令或访问寄存器IE或IP的指令。因为按中断系统的特性规定,在执行完这些指令之后,还应再继续执行一条指令,方可响应中断。

由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。

中断响应操作CPU响应周期完成如下操作:将相应的优先级生效触发器置1;硬件清除相应的中断请求标志(串行口中断标志需要用软件清除);执行一条硬件自动生成子程序调用指令:执行中断服务程序LCALLaddr16

;addr16:中断向量地址中断处理程序(又称中断服务)从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。三、中断处理一般包括保护现场和处理中断源的请求及恢复现场三部分内容。一般累加器A、PSW寄存器和其它一些特殊功能寄存器的内容需要保护。将优先级生效触发器清0;从堆栈中弹出栈顶的两个字节内容送PC——恢复断点;CPU转到断点处继续执行原程序。四、中断返回(RETI执行后)4.6中断响应时间

中断响应时间是从查询中断标志位的那个机器周期到转向中断入口地址所需要的机器周期数。不同的情况下对中断响应的时间是不同的:对于顺利的中断响应,其最短响应时间为3个机器周期。若中断系统只有一个中断源,则响应时间为3~8个机器周期之间。对于受阻的中断响应,则响应时间会更长一些。一般情况下,可不考虑响应时间,只在精确定时控制的场合需要考虑此问题。4.7外部中断的触发方式选择外部中断的触发方式:电平触发和边沿触发。1.电平触发方式特点:中断标志位的状态随CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化,这样能提高CPU对外部中断请求的响应速度。要求:外部中断源若有请求,必须把有效的低电平保持到请求获得响应时为止,不然就会漏掉;而在中断服务程序结束之前,中断源又必须撤消其有效的低电平,否则中断返回之后将再次产生中断。电平触发方式适合于外部中断请求信号以低电平输入且中断服务程序能清除外部中断请求源的情况。2.边沿触发方式特点:CPU采样到下降沿,则在IE0或IE1中将锁存一个逻辑1。即便是CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清零。要求:为保证下降沿能被可靠地采样到,外部中断引脚上的高低电平(负脉冲的宽度)均至少要保持一个机器周期(若晶振为12MHz时,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。(1)定时器0或1溢出中断。CPU在响应中断后,中断请求自动撤消。(2)边沿触发的外部中断。CPU在响应中断后,硬件自动清除有关的中断请求。(3)串行口中断。CPU响应中断后,靠软件来清除相应的标志。4.8中断请求的撤消

CPU响应某中断请求后,在中断返回前,应撤消该中断请求,避免重复响应。

CLRTI;清TI标志位CLRRI;清RI标志位电平方式外部中断请求的撤除方法较复杂。

图4.8是撤除电平方式的中断请求的可行方案之一:用P1.0接在触发器的直接置位端S端作为应答线。

当CPU响应中断后可使用如下两条指令:

SETBP1.0

;将P1.0置1

CLRP1.0

;将P1.0清0图4.8电平方式外部中断请求的撤消电路4.9中断程序的设计包含中断初始化程序和中断服务程序两部分。

一、中断初始化程序

中断初始化程序实质上就是对TCON、SCON、IE和IP寄存器的管理和控制。中断初始化程序一般不独立编写,而是包含在主程序中,中断初始化程序需完成以下操作:

1.IE设置。CPU开中断;

2.某一中断源中断请求的允许与禁止(屏蔽);

3.IP设置。确定各中断源的优先级;

4.若是外部中断请求,则要设定触发方式是电平触发还是边沿触发。

例:假设规定外部中断0为电平触发方式,高优先级,试写出有关的初始化程序。

解:可用两种方法完成。①方法1,用位操作指令完成:

SETBEA ;开中断允许总控制位

SETBEX0 ;外中断0开中断

SETBPX0 ;外中断0高优先级CLRIT0 ;电平触发②方法2,用其它指令也可完成同样功能:

MOVIE,#81H

;同时置位EA和EX0ORLIP,#01H

;置位PX0ANLTCON,#0FEH

;使IT0为0

二、采用中断时的主程序结构

ORG0000H

LJMP MAIN

ORG0003H

LJMPINT0SER

ORG000BH LJMPT0SER ……

ORG 0030HMAIN:

主程序INT0SER:

外部中断0中断服务程序T0SER:

定时器0中断服务程序三、中断服务程序

中断服务程序是为中断源的特定要求服务的独立程序段,以中断返回指令RETI结束。

中断服务程序流程:关中断保护现场开中断中断服务关中断恢复现场开中断返回工作寄存器的现场保护和恢复压栈和出栈使用直接寻址方式。寄存器组的切换。设置PSW的RS1、RS0位,便可起到现场保护的目的。例:原程序运行中使用0组,即RS1RS0=00,中断服务程序使用1组。

PUSHPSW;保护0组

CLRRS1;使用1组

SETBRS0…POPPSW;恢复0组

RETI;中断返回中断服务程序编制中的注意事项①视需要确定是否保护现场。②及时清除那些不能被硬件自动清除的中断请求标志,以免产生错误的中断。③中断服务程序中的压栈与弹栈指令必须成对使用,以确保中断服务程序的正确返回。④主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同。典型中断服务程序INT:CLREA;CPU关中断

PUSHPSW

;现场保护

PUSHACC

; SETBEA ;CPU开中断

中断服务程序 CLREA;CPU关中断

POPACC

;现场恢复

POPPSW

;SETBEA;CPU开中断

RETI

;中断返回,恢复断点MCS-51单片机有两个外部中断请求输入端(INT0和INT1)。实际应用中,若外部中断源有两个以上,则需要扩展外部中断源。

利用定时器扩展外部中断源

中断加查询扩展外部中断源

用优先权编码器扩展外部中断源4.10多外部中断源系统设计利用定时器扩展外部中断源MCS-51单片机有两个定时器,具有两个内部中断标志和外部计数输入引脚。当定时器设置为计数方式时,计数初值设置为满量程FFH。一旦外部信号从计数器引脚输入一个负跳变信号,计数器加1产生溢出中断,从而转去处理该外部中断源的请求。方法:

(1)定时器/计数器输入信号端T0、T1作外部中断输入。(2)选择计数方式,设置为工作方式2,初值0FFH,允许T0、T1中断,CPU开放中断,启动计数。数据自动加载方式:TL:计数器TH:预置计数器例:T0设置为外部计数模式,工作在方式2(初值自动重装)。计数器TH0、TL0初值均为0FFH,并允许T0中断,CPU开放中断。

ORG0000HAJMPIINI;跳到T0初始化程序

ORG000BHLJMPT0IR……IINI:MOVTMOD,#06H;设置T0的工作方式寄存器MOVTL0,#0FFH;T0置初值MOVTH0,#0FFHSETBETO;允许T0中断SETBEA;CPU开中断

SETBTRO;启动T0,开始计数……T0IR:外部中断服务程序中断加查询扩展外部中断源方法:用一个中断入口接受多个外部中断源,并加入中断查询电路。中断源由硬件产生,中断源的识别由程序查询处理。具体线路如图5-11

所示。有关中断服务程序的片段多个外部中断源连接法INT0INT1P1.0P1.1P1.2P1.38051装置1装置2装置3装置4+5VDV1:…

装置1的中断服务程序

AJMPEXITDV2:…

装置2的中断服务程序

AJMPEXITDV3:…

装置3的中断服务程序

AJMPEXITDV4:…

装置4的中断服务程序

AJMPEXIT

ORG0003HLJMPINTRP

;INT0中断服务程序入口

ORG 1000HINTRP:CLREA;INT0中断服务程序是一个中断查询程序服务程序PUSHPSW PUSHACCJB P1.0,DV1JB P1.1,DV2JB P1.2,DV3JB P1.3,DV4EXIT:POP ACCPOPPSWSETBEARETI用优先权编码器扩展外部中断源74LS148(优先权编码器)真值表输入输出/EI01234567A2A1A0/GSHXXXXXXXXHHHHLHHHHHHHHHHHHLXXXXXXXLLLLLLXXXXXXLHLLHLLXXXXXLHHLHLLLXXXXLHHHLHHLLXXXLHHHHHLLLLXXLHHHHHHLHLLXLHHHHHHHHLLLLHHHHHHHHHHLINT1P1.3P1.2P1.18051IR0IR1IR2IR3+5VGS74LS148A2A1A0○76543210IR4IR5IR6IR7EI○硬

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论