单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,4.2 中断系统及应用,4.2.1 中断有关的概念,4.2.2 8051中断标志及控制存放器,中断响应的条件及响应过程,4.2.4 中断程序设计思想,4.2.5 中断应用程序设计举例,中断有关的概念,中断:利用软硬件配合,根据某种需要断开正在执行的程序而转向另一专门 程序,结束后再返回到原断开处继续执行被中止的程序,这个过程称为中断。,中断效劳程序或中断处理程序:中断后转向执行的程序。,断点:原程序被断开的位置(地址)。,中断源:发出中断信号的设备。,中断请求或中断申请:中断源要求中断效劳所发出的标志信号。,中断源包括:外部设备如键盘、打印机、磁盘驱动器等,还有内部定时器、故障源,以及根据需要人为设置的中断源等等。,中断响应:中断源向CPU发出中断申请,CPU经过判断认为满足条件,那么对中断源作出的答复。,中断流程,引入中断的主要优点是:,实现分时操作,解决了快速CPU与慢速外设的矛盾,可以实现CPU与外部设备同时工作。,实现实时处理,中断源根据外界信息变化可以随时向CPU发出中断请求,假设条件满足,CPU会马上响应,对中断要求及时处理。假设用查询方式往往不能及时处理。,故障处理。计算机在运行时往往会出现一些故障,如电源断电、运算溢出等,有了中断系统,当出现故障时,CPU可即时转去执行故障处理程序,自行处理故障而不必停机。,1外部中断源,2个:INT0(P3.2)、INT1(P3.3),由P3.2端口线引入,低电平或下降沿引起。,由P3.3端口线引入,低电平或下降沿引起。,2内部中断源,T0溢出中断:定时/计数器0中断,由T0溢出引起。,T1溢出中断:定时/计数器1中断,由T1溢出引起。,串行口中断TI/RI:串行I/O中断,完成一帧字符发送/接收引起。,805l单片机共有5个中断:,4.2.2 8051中断标志及控制存放器,一、中断标志存放器TCON、SCON,TCON是定时计数器控制存放器,SCON是串行口控制存放器,1TCON 中断标志位,TCON存放器中与中断有关位如下:,D7 D6 D5 D4 D3 D2 D1 D0,TF1和TF0定时器溢出中断申请标志位。,IE1和IE0外部中断申请标志位。IE11表示外部中断1(1NT1)发出中断申请;IE0=1表示外部中断0(1NT0)发出中断申请。,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,IT1和IT0外部中断触发方式控制位。,IT11 边沿触发方式,INT1端有下跳变 时,发出中断申请,把IE1置“1;,IT1=0 电平触发方式,INT1端加低电平时,发出中断申请,把1E1置“1。,只有外部中断才有中断触发方式控制。,在边沿触发方式,中断响应后由硬件自动去除中断标志IE1和IE0。,在电平触发方式,无论硬件或软件均不能去除中断标志位,只有把INT1或INT0端的低电平撤掉,才能去除IT1或IT0。,2SCON 中断标志位,SCON 存放器只有最后两位TI(D1)和RI(D0)与中断有关。,99H 98H,SCON(98H),TI串行口发送中断标志。,在串行通信过程中,CPU每发送完一帧数据自动把TI置“1,表示发送结束申请中断。,RI串行口接收中断标志。,串行口通信时,每接收完一帧数据,那么把RI置“1,表示接收结束、发出中断申请。,注意:中断响应后,RI或TI不能自动去除,必须由软件来去除。编程时要注意在中断效劳程序中使用CLR RI或CLR TI指令使RI或TI清零。,TI,RI,二、中断优先级控制存放器IP,8051单片机内有 5个中断。假设有两个以上中断同时发出中断请求,先响应哪一个的申请那么是CPU必须解决的问题,中断优先级:根据每个中断源的重要程度和中断请求的紧急程度,事先排好一个响应中断的顺序,这个顺序叫中断优先级。,1自然优先级机器内预先安排好的中断顺序,外部中断0(INT0)最高级,定时器T0中断,外部中断1(INT1),定时器T1中断,串行口中断 最低级,T0、T1同时发出中断申请,CPU自然会先响应T0的中断请求。因为T0的优先级比T1优先级高。,2优先级设定,通过对优先级控制存放器IP的设置,把中断源分成两大类:,高优先级中断源和低优先级中断源。,假设同一级有几个中断源申请,那么按自然优先级顺序响应。,IPB8H格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,INT0 中断优先级控制位,T0 中断优先级控制位,INT1 中断优先级控制位,T1中断优先级控制位,串行口 中断优先级控制位,PS,PT1,PX1,PT0,PX0,指令 MOV IP,#09H;,把T1、INT0设置为高优先级,其余为低优先级。,假设T1、INT0同时发出中断申请,按自然优先级,先响应外部中断即INT0,后响应定时器T1的中断。,三、中断允许控制存放器(IE),中断源发出中断请求后,能否被CPU响应,还要由中断允许控制存放器的状态决定。IE通过软件设置,IE的格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,IE,(A8H),INT0中断允许/禁止位,T0中断允许/禁止位,INT1中断允许/禁止位,T1中断允许/禁止位,串行口中断允许/禁止位,总中断允许/禁止位,ES、ET1、EX1、ET0、EX0某位为“l,那么允许相应中断源中断,为“0那么禁止该中断源中断(该中断被屏蔽)。,EA是5个中断源的总控制位。EA=1允许有中断,但具体允许哪一个中断源中断,还要看相应控制位是否为“1。假设EA0禁止全部中断,即使五个中断源相应控制位为“1也不能响应中断请求。,EA,ES,ET1,EX1,ET0,EX0,例如,假设允许T0中断,禁止其它中断,那么中断允许控制字为82H(EA1,ET01),由送数指令设置。,方法一:,程序,MOV IE,#82H ;IE存放器送入控制字,方法二:,由于IE存放器可以位寻址,也可用位寻址指令设置它。,程序,SETB EA ;开总中断,SETB ET0 ;T0中断允许,805l系统复位后,IE、IP都被清0,假设使用中断必须由程序事先对二者进行设置。,中断响应的条件及响应过程,中断源发出中断请求后,要得到CPU的响应是有条件的。,根本条件如下:,首先中断源要发出中断请求,即把中断标志存放器TCON、SCON相应位置“1。,中断总允许位EA1,CPU允许响应中断申请。,IE存放器相应中断允许位置“1,允许该中断源发出中断申请,进行中断。,没有更高一级中断响应。,中断响应的条件及响应过程,中断响应过程:,当中断条件满足后,CPU响应中断。,这时,硬件自动产生长调用LCALL指令。此指令把主程序断点地址压入堆栈,然后把中断效劳程序入口地址装入PC。在PC指引下进入中断效劳程序。,中断效劳程序最后都必须有一条中断返回指令RETI。当执行RETI时把程序断点弹出并送往PC,这样程序又返回到主程序断点处,继续执行主程序。,例如,定时器T0溢出时发出中断申请,把TCON中的溢出标志位TF0置“1。,此时假设无更高级中断被响应,而且EAl、ET0l(EA、ET0在T0初始化时已设置好)。这时满足了CPU响应T0中断的条件,那么立刻响应中断,通过中断地址入口转去执行T0中断效劳程序。,注意:正在执行一条指令的过程中,不能响应中断;另外,在执行RETI或读写IE或IP之后,不能马上响应中断请求,至少在执行一条其它指令之后才会响应。,4.2.4 中断程序设计思想,中断系统虽是硬件系统,但必须由相应软件配合才能正确使用。设计中断程序需要弄清以下几个方面的问题。,一、中断程序设计的任务,设置中断允许控制存放器IE,允许相应中断源中断。,设置中断优先级存放器IP,选择、分配所使用中断源的优先级。,假设是外部中断源,还要设置中断请求触发方式IT1或IT0,决定采用边沿触发方式还是电平触发方式。,编写中断效劳程序,处理中断请求。,前3条一般放在初始化主程序中。,例如,,假设允许外部中断0中断,并设定它为最高级中断,其它中断源为低级中断,采取边沿触发方式。在主程序中可使用如下指令:,SETB EA ;开总中断,SETB EX0 ;允许外部中断0产生中断,SETB PX0 ;外部中断0为高级中断,SETB IT0 ;外部中断0申请信号为边沿触发方式,二、中断入口地址,中断入口地址和中断源是一一对应关系。,MCS51系列有5个中断对应5个入口地址:,中断源 入口地址,INT0 0003H,T0 000BH,INT1 0013H,T1 001BH,串行口 0023H,中断效劳程序必须从相应入口地址开始存放。当中断响应时由硬件生成的长调用指令(LCALL)先把断点压入堆栈保存,然后把上述相应入口地址装入PC。中断效劳程序从入口地址开始执行,直到返回指令RETI为止。,三、采用中断时主程序结构,常用程序结构如下:,ORG 0000H ;程序起始地址,LJMP MAIN ;跳转到主程序入口地址,ORG 中断入口地址,LJMP INT ;跳转到中断效劳程序,MAIN:主程序,INT:中断效劳程序,注意:多个ORG地址必须由小到大排列。,四、中断效劳程序根本结构,关中断,保护现场,开中断,中断处理,关中断,恢复现场,开中断,中断返回,4.2.5 中断应用程序设计举例,例1 使用定时器定时,每隔10s使与P10口连接的发光二极管闪烁10次;设 P1.0高电平灯亮,反之灯灭。,分析:中断源T0,入口地址000BH。当T0溢出时TF0为“l发出中断申请,条件满足CPU响应,进入中断处理程序。,置循环常数,T0初始值,闪烁常数,开中断,启动T0,置循环常数,Y,Y,N,重装常数,10s?,灯闪,10次?,置循环常数,N,主程序框图,中断效劳程序框图,主程序中要进行中断设置和定时器初始化,中断效劳程序中安排灯闪烁。程序如下:,ORG 0000H ;程序起始地址,LJMP MAIN ;主程序入口地址,ORG 000BH ;T0中断入口地址,LJMP INT ;中断人口地址,ORG 0100H,MAIN:MOV R0,#200 ;10s循环次数,MOV TMOD,#01H ;T0定时方式1,MOV TH0,#3CH ;50MS初值高位,MOV TL0,#0B0H;50ms初值低位,MOV R1,#10 ;闪烁次数,SETB EA ;开总中断,SETB ET0 ;开T0中断,SETB TRO ;启动T0,LP:SJMP LP ;循环等待中断,INT:MOV TH0,#3CH,MOV TL0,#0B0H,DJNZ R0,DE ;R00,不到10s,灯不闪,直接返回,MOV R0,#200 ;重装定时常数,DE0:SETB P1.0 ;R00,10s到,灯闪烁,LCALL DELAY,CLR P1.0 ;闪烁,LCALL DELAY,DJNZ R1,DE0 ;R,1,0,不够10次继续闪,闪够10次中断返回,MOV R1,#10 ;重装闪烁次数,DE:RETI,DELAY:MOV R6,#0FFH,DL0:MOV R7,#0FFH,DL1:NOP,DJNZ R7,DL1,DJNZ R6,DL0,RET,END,定时/计数器及中断系统综合,【例】设MCS-51单片机系统时钟频率fosc为6MHz,请编出利用定时/计数器T0在P1.0引脚上产生周期为2秒,占空比为50%的方波信号的程序,1主程序,任务:1T0工作方式的设定:,选择方式116位方式,最大定时131ms,2定时常数的设定:TC=216-100ms/2s=15536=3CB0H,即:TH0应装3CH,TL0应装B0H。,3中断管理:允许T0中断,开放总中断,即:IE应装10000010B。,4启动定时器T0:SETBTR0,5设置软件计数器初值:如使用R7,即R7应装0AH,6动态停机:SJMP$,主程序如下:,MAIN:MOVTMOD,#01H;设定T0为方式1,MOVTH0,#3CH;装入定时常数高8位,MOVTL0,#0B0H;装入定时常