《C51单片机的中断..ppt》由会员分享,可在线阅读,更多相关《C51单片机的中断..ppt(81页珍藏版)》请在课桌文档上搜索。
1、第5章 单片机的定时与中断系统,中断系统:包含中断源、中断方式、中断控制寄存器、中断响应和中断请求的撤除。,本章主要内容,定时/计数器:包含定时/计数器的定时和计数功能、定时/计数器的控制寄存器、工作方式及其应用。,单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断可以实现多个任务的资源共享。,MCS-51的中断系统,看书,电话铃响,接电话,继续看书,中断响应,中断返回,中断请求,中断的基本概念,主程序,断点,执行中断服务(或处理)子程序,继续执行程序,中断响应,中断返回,中断请求,中断的基本概念,所谓的中断就是,当CPU正在处理某项事务的时候,
2、如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。,中断的定义,实现这种功能的部件称为中断系统(中断机构)。产生中断的请求源称为中断源。中断过程中又有中断发生称为中断嵌套。中断执行的程序称为中断服务子程序。,中断功能强弱是计算机性能优劣的重要标志提高CPU效率 解决速度矛盾 实现并行工作 实时处理 应付突发事件,中断源是指在计算机系统中向CPU发出中断请求的来源。,MCS-51的中断系统中断源,8051单片机有5个中断源:,外部中断源:外部中断0(INT0)外部中断1(INT1),内部中
3、断源:定时/计数中断0(T0)定时/计数中断1(T1)串行中断,1.外部中断源,外部中断请求两种方式:电平触发方式(低电平有效)下降沿触发方式(脉冲的下降沿有效,至少要维持一个机器周期),2.内部中断源,定时/计数中断0(T0):定时/计数发生溢出时,产生中断请求。定时/计数中断1(T1):定时/计数发生溢出时,产生中断请求。,串行中断:为完成串行数据传送而设置。单片机完成接受或发送一组数据时,产生中断请求。,说明:外部中断源中断请求需设置,而 内部中断源中断请求不需设置,自动产生。,MCS-51的中断系统中断标志,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,
4、TF1,中断源,中断标志位,每一个中断源都有相应的中断标志位;某一个中断源申请中断,相应中断标志位置1。,MCS-51的中断系统中断允许,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,TF1,中断源,中断标志位,EA总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断;某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。,中断允许,ES,ET0,EX0,EX1,ET1,EA,MCS-51的中断系统中断优先级,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,TF1,中断源,中断标志位,单片机中有两个
5、中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位=1,为高优先级);同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。,中断允许,ES,ET0,EX0,EX1,ET1,EA,自然优先级,优先控制,PS,PT0,PX0,PX1,PT1,IE0,TCON,SCON,TF0,IE1,TF1,T0,T1,TI,RI,TXD,RXD,ES,ET0,EX0,EX1,ET1,EA,自然优先级,矢量地址,高级中断请求,自然优先级,矢量地址,低级中断请求,PX0,PT0,PX1,PT1,PS,IE,IP,MCS-51的中断系统结构图,中断标志位,中断源允
6、许,总允许,中断优先级,表 5.1 8051 中 断 源,定时器控制寄存器(TCON)串行口控制寄存器(SCON)中断允许控制寄存器(IE)中断优先级控制寄存器(IP),中断控制寄存器(4个):,TCON,T1溢出中断标志(TCON.7):T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。,1.定时器控制寄存器(TCON),计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。,TCON 88H,外部中断INT1中断标志位(TCON.3):
7、IE11,外部中断1向CPU申请中断,外部中断INT1触发方式控制位(TCON.2):IT1=0,电平触发方式 IT1=1,下降沿触发方式,IE0和IE1外中断请求标志位,返回,TI(SCON.1)串行发送中断标志。RI(SCON.0)串行接收中断标志。,SCON 98H,注意:该寄存器可以位寻址。,2.SCON寄存器,TI串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。,RI串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。串行中断请求由TI和RI的逻辑或得到。,其中与中断有关的控制
8、位共2位:,IE A8H,例:允许定时器T0中断:SETB EA SETB ET0 或 MOV IE,#82H,(3)中断允许寄存器IE,(4)中断优先级控制寄存器(IP),MCS-51有两个优先级,1为高,0为低字节地址:B8H位地址:0BFH0B8H,51单片机有两个中断优先级高级和低级 专用寄存器IP为中断优先级寄存器,用户可用软件设定 相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级 系统复位时,均为低优先级,IP B8H,对同时发生多个中断申请时:不同优先级的中断同时申请(很难遇到)先高后低相同优先级的中断同时申请(很难遇到)按序执行正处理低优先级中
9、断又接到高级别中断 高打断低正处理高优先级中断又接到低级别中断 高不理低,中断优先级处理原则,自然优先级:,INT0 高T0INT1T1RI/TI 低,CPU正在执行,低中断源,高中断源,RETI,RETI,中断控制寄存器汇总,例如,某软件中对寄存器IE、IP设置如下:MOV IE,#00H MOV IE,8FH(10001111B)MOV IP,06H(00000110B)SETB EA;SETB EX0;SETB ET0;SETB EX1;SETB ET1;CLR ES,中断设计举例,则此时该系统中:CPU中断允许;允许外部中断0、外部中断1、定时器/计数器0、定时器/计数器1提出的中断申
10、请;允许中断源的中断优先次序为:定时器/计数器0外部中断1外部中断0定时器/计数器1。,在中断服务程序编程时,首先要对中断系统进行初始化,也就是对几个特殊功能寄存器的有关控制位进行赋值。初始化的内容包括:(1)开总中断和相应中断源的中断(2)设置所用中断源的优先级;(3)若是外部中断,则应规定是低电平触发还是下降沿触发。,中断初始化,例1:若规定外部中断1为电平触发方式,高优先级,试写出有关的初始化程序。SETB EA;开中断 SETB EX1;允许外中断1中断 SETB PX1;外中断1定为高优先级 CLR IT1;电平触发,例2:使用外部中断0(INT0)和外部中断1(INT1),INT1
11、为高优先级,电平触发方式,INT0为低优先级,下降沿触发方式。,则初始化程序如下:,MOV IP,#04HMOV TCON,#01HMOV IE,#85H,MOV IP,#04HMOV TCON,#01HSETB EASETB EX0SETB EX1,或使用位操作指令如下:,中断处理过程,中断处理过程分为三个阶段:中断响应、中断处理和中断返回。中断响应 中断处理(又称中断服务)中断返回 中断请求的撤除,中断响应条件:,有中断源发出中断请求。中断总允许位EA=1。申请中断的中断源允许。,满足以上基本条件,CPU一般会响应中断。,aCPU正在响应同级或高优先级的中断。b当前指令未执行完。c正在执行
12、RETI中断返回指令或访问专用寄存器IE和IP的指令。,但若有下列任何一种情况存在,则中断响应会受到阻断。,一、中断响应过程,CPU在每个机器周期的S5P2期间采样中断请求信号。,1.采样:,如果有中断请求,将中断请求信号锁定到相应的请求标志位(TCON中)。,2.锁定:,在S6P2状态按一定的顺序(INT0、T0、INT1、T1、RI/TI)查询请求标志,并将有效的中断请求按优先级次序排好。,3.查询:,如果查询到某标志位为“1”(在TCON中),硬件自动产生一条LCALL指令,转到相应的中断入口地址(也称中断向量或中断矢量)。,4.产生LCALL指令:,程序存储器ROM,0000H:复位后
13、,程序的入口地址(PC=0000H),0023H:串行口中断入口,0003H:外部中断0入口,000BH:定时器0溢出中断入口,0013H:外部中断1入口,001BH:定时器1溢出中断入口,002AH,使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务子程序起始地址上去!,中断源 入口地址,INT0 0003HT0 000BHINT1 0013HT1 001BHRI/TI 0023H,特别注意:这些工作是硬件自动完成的!,如:ORG 0003HLJMPINTT0INTT0:中断服务子程序 RETI,5.中断入口地址安排跳转指令:,二、中断处理,中断服务程序从中断子程序
14、入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。,入口地址,RETI,中断处理,INTT0:PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI,保护现场,恢复现场,三、中断返回,中断返回是指中断服务完后,计算机返回到原来暂停的位置(即断点),继续执行原来的程序。中断返回由专门的中断返回指令RETI来实现。,RETI指令功能:把断点地址取出,送回到程序计数器PC中去。另外,它还通知中断
15、系统已完成中断处理,将清除优先级状态触发器。特别注意:不能用RET指令代替RETI指令!,程序存储器ROM,0000H:复位后,程序的入口地址(PC=0000H),0023H:串行口中断入口,0003H:外部中断0入口,000BH:定时器0溢出中断入口,0013H:外部中断1入口,001BH:定时器1溢出中断入口,002AH,包含T0中断服务子程序的程序结构:ORG 0000HAJMP MAINORG 000BHAJMP INTT0ORG 0100HMAIN:.INTT0:.RETI END,AJMP MAIN,AJMP INTT0,中断请求的撤销,外中断包括:边沿触发方式 和电平触发方式,一
16、、外部中断的撤销,1.边沿触发方式(自动撤销)中断响应完由硬件自动将中断标志位(IE0或IE1)清0。,电平触发外部中断撤除方法较复杂。因为在电平触发方式中,CPU响应中断时不会自动清除IE1或IE0标志,所以在响应中断后应立即撤除INT0或INT1引脚上的低电平。在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要通过硬件,再配合软件来解决。,2.电平触发方式,图 撤除外部中断请求的电路,当CPU响应中断后,可在中断服务程序中采用两条指令:CLR P1.0 SETB P1.0(或 ANL P1,#0FEH ORLP1,#01H)来撤除外部中断请求。,即:定时中断标志位(TF
17、0或TF1)清0(中断响应完由硬件自动清0。),二、定时中断的撤销(自动撤销),即:串行中断标志位(TI或RI)清0。,三、串行中断的撤销,中断响应后,还需测试这两个标志位的状态,以判定是接收操作还是发送操作,然后才能清除。,串行中断请求的撤销使用软件方法,在中断服务子程序中进行。,在中断服务程序编程时,首先要对中断系统进行初始化,也就是对几个特殊功能寄存器的有关控制位进行赋值。具体来说,就是要完成下列工作:(1)开中断和允许中断源中断(2)确定各中断源的优先级;(3)若是外部中断,则应规定是电平触发还是边沿触发。,中断程序举例,例1:若规定外部中断1为边沿触发方式,在中断服务程序中将寄存器B
18、的内容左环移一位。试编写主程序与中断服务程序。ORG 0000H LJMP MAIN ORG 0013HLJMP INTT1;中断服务程序转至INTT1处,MAIN:SETB EA;开中断 SETB EX1;允许外中断1中断 SETB IT1;边沿触发 MOV B,0FEH;设B的初值 SJMP$;暂停等待中断INTT1:MOV A,B;AB RL A;左环移一位 MOV B,A;回送(MOV P1,A);输出到P1口 RETI;中断返回,此例的实际意义:在INT1引脚接一个脉冲按钮,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,ORG0000H AJMP MAINORG
19、 0003H LJMP INTT0ORG 0013H LJMP INTT1,例2:当外中断0响应时,由P1.2口输出点亮灯,当外中断1响应时,由P1.2口输出熄灭灯。,ORG0030HMAIN:SETBEASETBEX0 SETB EX1SETBIT0SETB IT1 SJMP$,INTT0:CLR P1.2 RETIINTT1:SETB P1.2 RETI END,ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1,例3:无中断时,灯全亮,当外中断0响应时,低四位灯亮,当外中断1响应时,高四位灯亮。,ORG 0030HMAIN
20、:MOVSP,#60H MOVP1,#00HSETBEASETBEX0 SETB EX1SETBIT0SETB IT1 SJMP$,INTT0:PUSH P1MOV P1,#0F0HPOP P1 RETIINTT1:PUSH P1 MOV P1,#0FH POP P1 RETI END,1.无中断时,灯循环亮,当外中断0响应时,低四位灯亮,当外中断1响应时,高四位灯亮。,思考:,ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1,ORG0100HMAIN:MOVP1,#FEHMOVR7,#07HMOVSP,#60HLOOP:MO
21、V A,P1 RL A MOV P1,ADJNZ R7,LOOP,SETBIT0SETBEASETBEX0 SETB EX1SJMP$,ORG 1000HINTT0:PUSH P1MOV P1,#0F0HACALL DELAY POP P1 RETI,INTT1:PUSH P1 MOV P1,#0FH ACALL DELAYPOP P1 RETI END,注明:DELAY为延时程序。,2.无中断时,奇偶灯每隔1S交替闪烁亮,当外中断0响应时,低四位灯亮,当外中断1响应时,高四位灯亮。,思考:,3.无中断时,灯全亮,当外中断0响应时,灯左移亮,当外中断1响应时,灯右移亮。(设初值为7FH),思考
22、:,ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1,ORG 0100HMAIN:MOVSP,#60H MOV R7,#7FHMOVR6,#7FHSETBIT0SETBEASETBEX0 SETB EX1LP:MOVP1,#00HSJMPLP,ORG 1000HINTT0:PUSH P1LOOP:MOV A,R6 RL A MOV R6,A MOV P1,R6 POP P1 RETI,ORG 2000HINTT1:PUSH P1LOOP:MOV A,R7 RR A MOV R7,A MOV P1,R7 POP P1 RETI END,1.无中断时,灯全亮,当外中断0响应时,灯每隔1S左移循环亮,当外中断1响应时,灯每隔1S右移循环亮。,实验:,补充:外部中断源扩展,INT1服务程序:,INT1:PUSH PSW PUSH ACC JNB P1.0,PIT0 JNB P1.1,PIT1 JNB P1.2,PIT2INTR:POP ACC POP PSW RETI,PIT0:AJMP INTRPIT1:AJMP INTRPIT2:AJMP INTR,