




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章单片机的中断系统执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回5.1中断的概念5.1.1中断的定义中断是指计算机在正常执行程序的过程中,由于种种事件的发生,从而产生了中断请求信号,CPU暂时停止当前程序的执行,转而去处理突然发生的事件,事件处理完毕后,再返回去继续执行暂停的程序。
中断系统的结构框图
中断的优点:1.同步工作2.提高了CPU的工作效率3.实时处理5.1.2中断源中断源是指计算机与外部设备(打印机、键盘及其他部件)进行输入/输出数据交换时,需要向CPU发出中断请求而引发的中断请求信号。MCS-51系列单片机有5个中断源中断源入口地址具体入口如下:中断源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。1.外部中断源80C51的两个外部中断源通过P3.2和P3.3两个引脚引入,用于接收由外部原因产生的中断信号。外部中断0--INT0,由P3.2提供外部中断1—INT1,由P3.3提供2.定时器中断源定时器中断源由内部定时器/计数器溢出产生,属于内部中断。T0溢出中断:由片内定时/计数器0提供T1溢出中断:由片内定时/计数器1提供
3.串行口中断源串行口中断RI/TI是由内部串行口产生的,属于内部中断。当串行口接收或发送串行数据时,串行口自动向CPU发出一个中断请求,CPU响应中断请求后转入串行口中断服务子程序,以实现串行数据的传送。5.1.3中断的优先级MCS-51有两个中断优先级,对于每一个中断请求源可编程为高优先级中断或低优先级中断,可实现二级中断嵌套。中断响应的基本原则是::(1)高优先级不能被低优先级中断;(2)低优先级可被高优先级中断。(3)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断。(4)两个同一级的中断源同时向CPU发出中断申请,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求。
自然优先顺序
中断优先级寄存器中断优先级寄存器IP,其字节地址为B8H为“1”表示高级中断,为“0”表示低级中断PSPT1PX1PT0PX0BCHBBHBAHB9HB8HIP位地址
PS:串行口中断优先级控制位。PTl:定时计数器T1中断优先级控制位。PXl:外部中断1中断优先级控制位。PT0:定时计数器T0中断优先级控制位。PX0:外部中断0中断优先级控制位。
5.1.4中断控制在中断请求被响应前,中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中。与中断控制有关的控制寄存器有四个:TCON----定时控制寄存器,IE----中断允许控制寄存器,IP----中断优先级控制寄存器,SCON----及串行口控制寄存器。1.定时控制寄存器TCON
D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0中断请求标志触发方式选择0低电平1下降沿1)TF1:T1溢出中断标志。CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。2)TF0:T0溢出中断标志。3)IE1:外部中断1标志。IE1=1表明外部中断1向CPU申请中断。4)IE0:外部中断0标志。5)ITl、IT0:外部中断的中断触发方式控制位2.中断允许控制寄存器IE
D7D6D5D4D3D2D1D0EAESET1EX1ET0EX00禁止,1允许字节地址为A8H3.串行口控制寄存器SCON
D7D6D5D4D3D2D1D0TIRI串行中断请求标志1)TI:串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。但CPU响应中断后,并不能自动清除TI标志,必须由软件清除。
2)RI:串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。同样,CPU响应中断后不会自动清除RI标志,必须由软件清除。
5.1.5中断响应1.CPU的中断响应条件
①无同级或高级中断正在服务;②当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;③若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。2.响应过程①置位中断优先级有效触发器,即关闭同级和低级中断②调用入口地址,断点入栈,相当于LCALL指令③进入中断服务程序。响应时间--从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。1个周期(查询)+2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)+4个周期乘除指令+2个周期长调用=8个周期。3.中断处理
中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。此过程一般包括两部分内容,一是保护现场,二是处理中断源的请求。
4.中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。5.1.6中断响应的撤除
1.硬件自动撤除在定时器中断方式下,定时器溢出中断标志TF0、TF1在中断响应之时会被硬件自动撤除;在外部中断的边沿触发工作方式下,外部中断标志IE0、IE1在中断响应之时会被硬件自动撤除。
2.软件撤除串行口的中断请求信号可以用软件撤除。串行口的接收/发送中断标志RI/TI需要在中断响应后测试这两个标志位的状态。5.2外部中断的使用
例:有5个外部中断源,它们的优先级排队如下:X0(最高)、X1、X2、X3、X4(最低),这五个外部中断源均为高电平申请中断5.2.1外部中断源的应用
ORG 0013H AJMP CXINT ……CXINT:PUSH PSW
PUSH A
ORL P1,#0FH
JBP1.0,ZINT1 JBP1.1,ZINT2
JBP1.2,ZINT3
JBP1.3,ZINT4FHZD:POP A
POP PSW
RETI…………ZINT1: …
…
LJMP FHZDZINT2: …
…
LJMP FHZDZINT3: …
例:在单片机的外部中断0端接入一个单脉冲触发器,每按一次单脉冲触发器中的开关K,都会产生中断。每次产生的中断都会使P1口的数据左移一位,在P1口扩展了8个发光二极管,其起始状态为P1.0口的发光二极管亮,其余端口的发光二极管灭。4.软件
ORG 0000HAJMP MAINORG 0003H ;中断服务程序入口地址
AJMP ZHD0ORG 0030HMAIN: MOV SP,#70H ;设置堆栈指针
SETB IT0 ;外部中断0为边沿触发方式
MOV IE,#10000001B ;开放外部中断0
MOV A,#0FEH ;设置P1口的初始状态LOOP: MOV P1,A
AJMP LOOP ;循环等待外部中断ZHD0: MOV A,P1 ;中断服务程序开始
RL A ;P1口的数据左移
MOV P1,A ;数据再送P1口
RETI ;中断服务程序返回
END例:利用单片机扩展5个外部中断源,中断的优先次序为X0~X4,其中X0接到外部中断INT0上,X1~X4接到外部中断INT1上;单片机的P1.4~P1.7接4个发光二极管用来作输出指示;当有X1~X4其中一个外部中断发生时,相应的发光二极管D1~D4点亮;当X0外部中断发生时,4个发光二极管全亮。
ORG 0000HAJMP MAINORG 0003H ;中断服务程序入口地址
AJMP ZHD0ORG 0013H ;中断服务程序入口地址
AJMP ZHD1ORG 0030HMAIN:MOV SP,#70H SETB IT0 SETB IT1 MOV IP,#00000001B;外部中断0最高优先级
MOV IE,#10000101B;MOV A,#0FFH;关闭发光二极管
MOV P1,ALOOP:AJMP LOOP
ZHD0: PUSH PSW ;保护现场
PUSH A MOV A,#0FH ;4个发光二极管全亮
MOV P1,A POP A ;恢复现场
POP PSW RETI ;中断返回ZHD1: PUSH PSW ;保护现场
PUSH A ORL P1,#0FH ;读取P1口的低4位
JNB P1.0,IN1 ;中断源查询,并转向相应的中断服务程序
JNB P1.1,IN2 JNB P1.2,IN3 JNB P1.3,IN4FH1: POP A ;恢复现场
POP PSW RETIIN1: MOV A,#11101111B;中断服务程序1
MOV P1,A ;D1发光二极管亮
AJMP FH1IN2: MOV A,#11011111B;中断服务程序2
MOV P1,A ;D2发光二极管亮
AJMP FH1IN3: MOV A,#10111111B;中断服务程序3
MOV P1,A ;D3发光二极管亮
AJMP FH1IN4: MOV A,#01111111B;中断服务程序4
MOV P1,A ;D4发光二极管亮
AJMP FH1 END
5.2.2利用定时器扩展外部中断源
在外部中断源不够用的情况下,可以把T0和T1引脚作为外部中断请求输入端,而定时器的溢出中断作为外部中断请求标志。例如:将定时器/计数器T1设置为方式2(自动恢复常数方式)外部计数方式,定时器的时间常数TH1、TL1的初值均为0FFH,允许T1中断5.2.3多级外部中断的扩展
74LS148是一种优先权编码器,其管脚如图5-6所示。它具有8个输人端(IR0~IR7),可用作8个外部中断源的输入端,A0~A2为3个编码输出端,GS为编码器输出瑞,EI为使能端(低电平有效)。在使能端EI为低电平时,只要其8个输入端中任意一个输入为低电平,就有一组相应的编码从A0~A2输出,且编码器输出端GS为低电平,如果8个输入端同时有多个输入,则A0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论