收藏 分享(赏)

第五章 中断系统.ppt

上传人:tkhy51908 文档编号:8011235 上传时间:2019-06-04 格式:PPT 页数:37 大小:1.81MB
下载 相关 举报
第五章 中断系统.ppt_第1页
第1页 / 共37页
第五章 中断系统.ppt_第2页
第2页 / 共37页
第五章 中断系统.ppt_第3页
第3页 / 共37页
第五章 中断系统.ppt_第4页
第4页 / 共37页
第五章 中断系统.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第五章 中断系统,第一节 中断概述,第四节 扩充外部中断源,第二节 80C51中断系统,第三节 中断处理过程,第五节 中断系统的应用,返回总目录,第一节 中断概述,已知80C51单片机主频为6MHz,请利用定时器T0和P1.2输出矩形脉 冲,其波形如下:,一、中断的概念,02H,控制字,MOV TMOD , #02H MOV TH0 , #E7H MOV TL0 , #E7H SETB TR0 SETB P1.2 MOV R0 , #7 JBC TF0 , REP AJMP DEL CLR P1.2 DJNZ R0 , DEL AJMP L1,L1:,DEL:,REP:,效率低,计算机在执行程

2、序的过程中,由于CPU以外的某种原因,中止当前程序的执行,而去执行相应的处理程序,待处理结束后在回来执行被中止的原程序,这中情况我们称之为“中断”。,所执行的处理程序称为“中断服务程序”;原来运行的程序称为“主程序”;主程序被断开的点称为“断点”;引起中断的原因,或能发出中断申请的来源称为“中断源”。,与子程序调用的区别:调用子程序指令是事先安排好的;而何时调用中断服务程序事先无法确知,因而调用中断服务程序的过程是由硬件自动完成。,二、中断系统的功能,1.能实现中断及返回,响应中断,保护现场,将断点处的PC值压入堆栈,将相关寄存器内容压入堆栈,返回断点,恢复现场,将断点处的PC值弹回RETI,

3、将相关寄存器的值弹回软件,2.能实现中断优先级,3.能实现中断嵌套,中断流程图,中断嵌套流程图,第二节 80C51中断系统,一、中断源及入口地址,1.中断源,三个片内中断源:T0 、 T1 和 串行通信,2.入口地址,二、中断请求标志,外部中断申请方式控制,三、中断允许控制,EA=1开放中断,EA=0屏蔽中断,ES=1允许串行中断,ES=0屏蔽串行中断,中断允许控制寄存器IE可以位寻址,ET1=1允许T1中断,ET1=0屏蔽T1中断,EX1=1允许外部中断1申请中断,EX1=0屏蔽外部中断1申请中断,注意:单片机复位后IE被清零,四、中断优先级,PS1=1高优先级(SETB PS),PS1=0

4、低优先级(CLR PS),PT1=1高优先级,PT1=0低优先级,注意:单片机复位后IP 被清零,以下为自然优先级在人为设置的优先级相同的情形下,CPU按照自然优先级进行响应。,JMP $,第三节 中断处理过程,中断处理过程可分三个阶段:中断响应、中断处理、中断返回,一、中断响应,有中断源发出中断申请,中断总允许位EA=1,中断源的中断允许位为1,CPU正在执行一个同级或高级的中断服务,不是正在执行的指令的最后一个周期,正在执行RETI或对IE、IP进行读/写,二、中断处理,中断处理(中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为“中断处理”。此过程一般包括两部分

5、内容,一是保护现场,二是处理中断请求。,三、中断返回,中断返回是指中断服务完成后,计算机返回到断点(即原来断开的位置),继续执行原来的程序。,中断返回由专门的中断指令“RETI”实现,该指令的功能是把断点地址取出,送回到程序计数器PC中去。,四、中断请求的撤除,CPU响应某中断请求后,在中断返回前,应撤销该中断请求,否则会引起另一次中断。,外部中断:一旦输入信号有效,则向CPU申请中断并且使IE0 (IE1) =1,在边沿触发申请中断方式下,由硬件复位;在电平触发申请中断方式下,软件与硬件均不能清除中断标志,必须在中断返回前撤销引脚上的低电平。,定时/计数器:TF0 (TF1)=1请求中断处理

6、。使用中断时由硬件清零,在查询方式可由软件清零。,串行中断:RI或TI1请求中断,响应中断后必须软件清零。,例:用中断的方法编程使P1.0和P1.1分别输出周期为2ms和500us的方波。,例:用中断的方法编程设计一个秒闪电路,其功能是发光二极管LED每次闪亮1s,即亮600ms、灭400ms.主频为12MHZ.设P1.0接发光二极管,课堂练习:试将程序中的CJNE替换成DJNZ,TIMER0_SUB:CLR TROPUSH PSWINC R2CJNE R2,#8H,SUB1CLR P1.0SUB1: CJNE R2,#14H,TENDSETB P1.0MOV R2 , #0TEND: MOV

7、 TH0,#3CHMOV TL0,#0B0HSETB TR0POP PSWRETI,第四节 扩充外部中断源,一、利用定时器扩充法,80C51单片机有两个定时器,具有两个内部中断标志和外部计 数引脚。将其设置为计数方式,计数初值定为满量程,当从外 部计数引脚输入一个下降沿,计数器加1产生溢出中断。因而 可把外部计数引脚T0(P3.4)或T1(P3.5)作为扩充中断输入,定 时器的溢出中断标志和服务程序作为扩充中断源的标志和服务 程序。,MOV TMOD , #06H MOV TL0 , #0FFH MOV TH0 , #0FFH SETB TR0 SETB ET0 SETB EA, 将T0(P3

8、.4)扩充为外部中断源输入端,二、中断和查询结合法,通过外部中断1扩展出4个外 部中断源引脚,这样加上外 部中断0,单片机共有5个中 断源XI0XI4,其中XI0的 优先级最高,至于XI1XI4 的优先级则在外部中断1服 务程序中,由软件按人为设 定的顺序(优先级)查询外 部中断哪位是高电平(XI1 XI4高电平表示申请中断), 然后进入该中断处理。,1,SAV1: XI1中断服务程序AJMP DISUB SAV2: XI2中断服务程序AJMP DISUB SAV3: XI3中断服务程序AJMP DISUB SAV4: XI4中断服务程序AJMP DISUB,EXINT: PUSH PSWPU

9、SH ACCJB P1.0 , SAV1JB P1.1 , SAV2JB P1.2 , SAV3JB P1.3 , SAV4 DISUB: POP ACCPOP PSWRETI,SAV1: XI1中断服务程序AJMP DISUB SAV2: XI2中断服务程序AJMP DISUB SAV3: XI3中断服务程序AJMP DISUB SAV4: XI4中断服务程序AJMP DISUB,第五节 中断系统的应用,本节将通过两机通信的实例,说明中断系统的应用。通过实例,可 以了解中断控制和中断服务程序的设计思想及注意的问题。,例:已知甲、乙两台80C51单片机所使用的晶振均为11.0592MHZ.现要

10、求两机之间进行串行通信,甲机发送,乙机接收.传输波特率定为9600波特.甲机以78H,77H中的内容为发送数据的起始地址,以76H75H中的内容为发送数据的末地址。甲机首先发送数据的起始地址和末地址,然后再开始发送数据.乙机接收到的第12字节作为存放接收数据的起始地址,第34字节作为存放接收数据的末地址址,第5字节为起始数据。(地址用查询方式发送,数据用中断发送),甲机发送程序,ORG 2000H MOV TMOD , 20H-定时/计数器T1的工作方式为软件启动、定时、方式2 MOV TH1 , #0FDH-波特率为9600波特,晶振为11.0592查表可得T1初始值为FDH MOV TL1

11、 , #0FDH-方式2为初始值自动重装的8位定时/计数器 SETB EA-打开总开关 CLR ES-关闭分开关。发送地址时用查询方式,因此禁止串行中断 SETB TRI,串行通信的“发动机设置”及“启动发动机(SETB TR1)”,MOV SCON , #40H-串行口置工作方式1(8位数据位,1位起始位,1位中止位,共10位) CLR TI-发送前,清除串行发送中断标志(每次发送前必做的工作) MOV SBUF , 78H-把数据块首地址的高8位发送出去 JNB TI , $-等待发送完毕 CLR TI MOV SBUF , 77H-把数据块首地址的低8位发送出去,JNB TI , $ C

12、LR TI MOV SBUF , 76H-把数据块末地址的高8位发送出去 JNB TI , $ CLR TI,MOV SBUF , 75H-把数据块末地址的低8位发送出去,由于是最后一个地址,发送完后就 要发送数据,按照 题意数据用中断方式发送,因此发送最后一个地址不用查询方式来判断是否发送完毕,而是等待发送完毕串行口自动申请中断,进入中断服务程序完成数据传送任务。另外,传送速率为9600波特率,也就是传送一位所需的时间为约为104us(若晶振为11.0592MHZ,执行一条指令的时间最多为4us),SETB ES SJMP $,以上为甲机发送程序的主程序,完成发送数据块地址并进入中断服务程序

13、的任务。 以下为承担发送数据的中断服务程序,串行口的中断服务程序的入口地址为0023H,ORG 0023H LJMP 2000H ORG 2000H ESS: PUSH DPLPUSH DPHPUSH AMOV DPH , 78HMOV DPL , 77HMOVX A , DPTRCLR TIMOV SBUF , A,以上发送的是数据块的第一个数据,所需时间为8104832us,本程序不设问答机制,即乙机接收完毕后,给甲机发送一个接收完毕信号,然后甲机再启动发送第二个数据。,MOV A , DPHCJNE A , 76H ,EN1-不相等则证明尚未传送完毕,应该重新修改地址指针指向数据块的下一

14、个数据,因此ENI程序块完成的是修改工作。MOV A , DPLCJNE A , 75H , EN1CLR ES -A中的内容与75H中的内容相等,证明数据全部传送完毕,所以关闭串行中断ESC: POP APOP DPHPOP DPL-注意出栈顺序RETIEN1: INC 77HMOV A , 77H-77H单元中的内容加1有可能等于0,此时向高位进位JNZ EN2INC 78H,EN2: SJMP ESC,以上中断服务程序块中,ESS部分完成的是数据的传送和地址的比较;EN1完成的是地址的修改;ESC部分完成的是恢复现场退出中断服务程序。值得注意的是执行完以上中断服务程序的时间因该不足832

15、us,也就是说在中断服务程序中执行MOV SBUF , A后,要经过地址比较、修改地址、恢复现场三项任务才能退出中断等待下一次的中断申请,也就是说执行三项任务的时间不能超过832us(这个要求很容易办到),乙机接收程序ORG 2000H REV: MOV TMOD , #20HMOV TL1 , #0FDHMOV TH1 , #0FDHSETB TR1-启动发动机,乙机设置接收波特率为9600波特,与甲机的发送波特率一致。乙机发动机设置及启动,MOV SCON , #50H,两机沟通方式设定,与甲机一致均为串行通信方式1并允许接收.1040us接收一个数据(10位),SETB EASETB E

16、S-乙机接收数据采用中断方式,所以一开始就打开串行中断CLR B.0-接收完地址后将B.0置1表示地址结束完毕MOV 70H , #78H-把甲机发送的地址存放在乙机片内相同的位置(78H,77H,和76H,75H),SJMP $-虽然在执行完MOV SCON,#50H时已经启动接收,但由 于接收一个数据需要832us,因此在执行SJMP $时还没有接收完一个具有10位的数据,以上为乙机接收数据的主程序。主要解决发动机的设置及启动、沟通方式的设置、开中断 及必要标志位的设定。至于发送数据的任务交由中断服务程序来完成。,ESS: PUSH DPLPUSH DPHPUSH AMOV A , R0P

17、USH A-以上为保护现场JB B.0 , DA0-分水岭,接收到的是地址就顺序执行接收地址程序模块,否则转到接收数据程序模块DA0。MOV R0 , 70H-把(70H)即78H存入R0,78H为乙机片内地址MOV A , SBUFFMOV R0 , ADEC 70HCLR RI,到此为止乙机完成接收一个10位的数据。接下来该作什么呢?当然是等待下10位数据的接收,但必须做好准备工作。准备工作包括:判断是否接收完毕、修改地址指针等,MOV A , #74H-4个字节的地址接收完毕时70H中的内容位74HCJNE A , 70H , DA2-不相等则直接退出中断服务程序,等待接收下一个地址否则

18、表示地址接收完毕。SETB B.0 DA2: POP AMOV R0 , APOP APOP DPH,POP DPLRETI DA0: MOV DPH , 78HMOV DPL , 77HMOV A , SBUFFMOVX DPTR , ACLR RI,INC 77HMOV A , 77HJNZ DA3INC 78H DA3: MOV A , 76HCJNE A , 78H , DA2MOV A , 75HCJNE A , 77H , DA2CLR ESCLR TR1AJMP DA2,DA2程序块:恢复现场,退出中断程序 DA0程序块:修改地址指针78H和77H DA3程序块:判别是否全部数据接收完毕,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报