第五章中断系统.ppt

上传人:本田雅阁 文档编号:3116562 上传时间:2019-07-12 格式:PPT 页数:18 大小:334.53KB
返回 下载 相关 举报
第五章中断系统.ppt_第1页
第1页 / 共18页
第五章中断系统.ppt_第2页
第2页 / 共18页
第五章中断系统.ppt_第3页
第3页 / 共18页
第五章中断系统.ppt_第4页
第4页 / 共18页
第五章中断系统.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《第五章中断系统.ppt》由会员分享,可在线阅读,更多相关《第五章中断系统.ppt(18页珍藏版)》请在三一文库上搜索。

1、第五章 中断系统,5-1 中断技术的概述,5-2 MCS-51中断系统,中断系统是计算机的重要指标之一。,一、 中断概念 某人看书 执行主程序 日常事务 电话铃响 中断信号INT=0 中断请求 暂停看书 暂停执行主程序 中断响应 书中作记号 当前PC入栈 保护断点 电话谈话 执行I/O程序 中断服务 继续看书 返回主程序 中断返回,5-1 中断技术的概述,三、中断优先权 1.当同时有多个中断请求信号,先响应优先级别高的中断请求。 2.高优先级中断请求信号可中断低优先级中断服务。,四、中断源 能发出中断请求信号的各种事件。如I/O设备、定时时钟、系统故障、软件设定等。单片机中也有一些可以引起中断

2、的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。,二、中断过程 中断系统工作可由中断请求、中断响应、中断服务、中断返回四个阶段组成。,5-2 MCS-51中断系统,中断系统内部结构,一中断源信号,二. 中断允许控制,2个外部中断源信号:INT0、INT1 2个定时器T0、T1溢出中断请求:TF0、TF1 1个串行口数据发送、接收结束中断请求:TI、RI。,三. 2级中断优先级控制 优先级选择开关:PS、PT1、PX1、PT0、PX0,总允许开关:EA 源允许开关:ES、ET1、EX1、ET0、EX0,如图所示,MCS-51中断系统由与中断有关的特殊功能寄存器、

3、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断 类弄、中断的开、关和各种中断源的优先级确定。,1.中断请求源:,(1)外部中断请求源: 即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。 在内部的TCON中有四位是与外中断有关的。 IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。 IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会

4、置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。 IT1、IE1的用途和IT0、IE0相同。,(2)内部中断请求源 TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。 TF1:与TF0类似。 TI、RI:串行口发送、接收中断,在串口中再讲解。,5-3 中断系统控制,在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表,其中EA是总开关,如果它等于0,则所有中断都不允许。 ES串行口中断允许 ET1定时器1中断允许 EX1外中断1中断允许。 ET0定时器0中断允许 E

5、X0外中断0中断允许。,例:如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE可以是,即8CH,当然,我们也可以用位操作指令 SETB EA SETB ET1 SETB EX1 来实现它。,2、中断允许寄存器IE,大家应当明白,为什么前面有一些程序一始我们这样写: ORG 0000H LJMP START ORG 0030H START: 。 。 。,3、五个中断源的中断服务入口地址,外中断0:0003H 定时器0:000BH 外中断1:0013H 定时器1:001BH 串口 : 0023H,这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从000

6、0H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。,中断服务入口地址,它们的自然优先级由高到低排列。,单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。,4、优先级:,开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置。看表2 中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,相应的中断就是高优先级,否则就是低优先级。,例:设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。 IP的首3位没用,可任意取值

7、,设为000,后面根据要求写就可以了,例:在上例中,如果5个中断请求同时发生,求中断响应的次序。 响应次序为:定时器0外中断1外中断0实时器1串行中断。,因此,最终,IP的值就是06H,中断系统控制-中断控制寄存器,1.中断标志位: TF1、TF0、IE1、IE0、RI 、TI 登记各中断源请求信号:=1,有中断请求;= 0,无中断请求。 CPU响应中断后,该中断标志自动清零。TI,RI标志必须软件清零。,2.外部中断触发方式选择位:IT0、IT1 =1:负边沿触发中断请求;= 0:低电平触发中断请求。,3.中断允许控制位:EA、ES、ET1、EX1、ET0、EX0 =1开中断;= 0关中断。

8、 例:允许CPU响应INT0的中断请求 SETB EX0 SETB EA,4中断优先级控制位:PS、PT1、PX1、PT0、PX0 2级优先级:=1为高优先级,= 0为低优先级。 同一优先级别按内部查询顺序排列优先级: 高 INT0、T0、INT1、T1、SIO 低。,4中断优先级控制位:PS、PT1、PX1、PT0、PX0 2级优先级:=1为高优先级,= 0为低优先级。 同一优先级别按内部查询顺序排列优先级: 高 INT0、T0、INT1、T1、SIO 低。,1.中断标志位: TF1、TF0、IE1、IE0、RI 、TI 登记各中断源请求信号:=1,有中断请求;= 0,无中断请求。 CPU响

9、应中断后,该中断标志自动清零。TI,RI标志必须软件清零。,2.外部中断触发方式选择位:IT0、IT1 =1:负边沿触发中断请求;= 0:低电平触发中断请求。,3.中断允许控制位:EA、ES、ET1、EX1、ET0、EX0 =1开中断;= 0关中断。 例:允许CPU响应INT0的中断请求 SETB EX0 SETB EA,5-4 中断响应和中断返回,1、中断响应的条件: 我们人可以响应外界的事件,是因为我们有多种“传感器“眼、耳可以接受不同的信息,计算机是如何做到这点的呢?MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中

10、断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。,在下列三种情况之一时,CPU将封锁对中断的响应: A CPU正在处理一个同级或更高级别的中断请求。 B 现行的机器周期不是当前正执行指令的最后一个周期。 我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。 C 当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中

11、断。 这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。,MCS51的中断响应过程:,2、中断响应过程,这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗?,一个完整的主程序看起来应该是这样的: ORG 0000H LJMP START ORG 0003H LJMP INT0 ;

12、转外中断0 ORG 000BH RETI ;没有用定时器0中断,在此放一条RETI,万一 “不小心“产生了中断,也不会有太大的后果。,CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。,3. 中断返回,4 中断响应时间 正常中断响应时间至少为38个机器周期,如果有同级或高级中断服务,将延长中断响应时间。,中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存

13、着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。 注意:CPU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。,中断返回指令: RETI= RET指令 + 通知CPU中断服务已结束。,5-5 中断系统应用举例,要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 解:INT0输入按键信号,P1.0输出改变LED状态。 1跳变触发:每次跳变引起一次中断请求。,ORG 0000H;复位入口 AJMP MAIN

14、ORG 0003H ;中断入口 AJMP PINT0 ORG 0100H ;主程序 MAIN:MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 SETB IT0 ;负跳变触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0:CPL P1.0 ;改变LED RETI ;返回主程序,处理外部中断,ORG 0000H;复位入口 AJMP MAIN ORG 0003H ;中断入口 AJMP PINT0 ORG 0100H ;主程序 MAIN:MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB

15、 EX0 ;开INT0中断 CLR IT0 ;低电平触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0:CPL P1.0 ;改变LED WAIT:JNB P3.2,WAIT;等按键释放 RETI ;返回主程序,1软件等待按键释放。 2硬件清除中断信号。,2. 电平触发:避免一次按键引起多次中断响应。,例51 图53所示为一检测报警电路,图中检测电路为无锁按钮开关,P1.0、P1.1分别驱动声、光报警电路。P1.0、P1.1端线输出“”时报警电路工作。试设计一程序,每当按键按下一次后,P1.0,P1.1输出报警信号10秒钟,并使内部RAM 55H单元数据

16、加1,10秒钟延时子程序为DELLAY10。,解: 参考程序如下: ORG 0000H LJMP MAIN ;上电或复位后自动转向主程序。 ORG 0003H LJMP BJ ;外中断0入口地址为0003H。 ORG 0030H MAIN:MOV 55H, #00H ;计数器清零。 CLR P1.0 ;关报警。 CLR P1.1 MOV SP, #30H ;设置堆栈指针。 SETB IT0 ;选择边沿触发中断方式。 SETB EA ;允许总中断。 SETB EX0 ;允许INT0申请中断。 HERE:SJMP HERE ;等待中断。,以下为中断服务子程序: ORG 00A0H BJ:PUSH

17、ACC ;保护现场。 MOV A, #03H MOV P1, A ;P1.0,P1.1置1, ;即发出声光报警。 LCALL DELAY10 ;延时10S。 MOV A, #00H MOV P1, A ;清报警。 INC 55H ;计数器加1。 POP ACC ;现场恢复。 RETI ;中断返回。,例52 如图54所示,当按键AN1或AN2按下时,会产生中断。试编程将INT0设为低优先级,INT1设为高优先级,主程序执行时循序点亮LED;当INT0产生中断后,执行中断子程序1,此时8只LED全亮然后全暗,如此16次后,返回主程序;当INT1产生中断后,执行中断子程序2,此时8只LED则为一次亮

18、4只,然后亮另外4只,如此16次后,返回主程序。,解:参考程序如下: ORG 0000H AJMP MAIN ORG 0003H AJMP INT0 ORG 0013H AJMP INT1 ORG 0030H MAIN:MOV SP, #30H ;设堆栈指针。 SETB PX1 ;设外部中断1优先级为高。 CLR PX0 ;设外部中断0优先级为低。 MOV TCON,#05H ;设边沿触发。 SETB EA ;允许总中断。 SETB EX0 ;允许INT0中断。 SETB EX1 ;允许INT1中断。 MOV A, #01H ;从P1.7至P1.0循序亮一只。 TOR1: RR A MOV P

19、1, A ACALL DELAY ;延迟。 AJMP TOR1,INT0中断子程序: ORG 0100H INT0:PUSH PSW ;保护现场。 PUSH ACC MOV R0, #10H ;循环16次。 LOOP1:MOV A, #00H ;全亮。 MOV P1, A ACALL DELAY ;延迟。 MOV A, #0FFH ;全暗。 MOV P1, A ACALL DELAY ;延迟。 DJNZ R0, LOOP1 POP ACC ;恢复现场。 POP PSW RETI,INT1中断子程序: ORG 0200H INT1:PUSH PSW ;保护现场。 PUSH ACC MOV R0,#10H ;执行16次。 LOOP2:MOV A, #0FH ;一次亮4只。 MOV P1, A ACALL DELAY ;延迟。 MOV A, #0F0H ;亮另4只。 MOV P1, A ACALL DELAY ;延迟。 DJNZ R0, LOOP2 POP A CC ;恢复现场。 POP PSW RETI END,延时子程序: ORG 00A0H DELAY:MOV R3, #0FFH LOOP:MOV R4, #0FF H DJNZ R4, $ DJNZ R3, LOOP RET,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1