第五章中断 教学目的和要求 本章主要介绍中断的概念,MCS-51的中断系统,CPU对中断的 响应及中断扩展。要求理解MCS-51中断系统及响应过程,理解中断 触发的相应条件,以及中断的触发方式。掌握中断系统的控制,学握 C51中断函数的编写和中断扩展的方法。 重点:MCS-51的中断系统,中断函数的编写和中断扩展的方法 难点:C51中断函数的编写和中断扩展的方法 学时:2 5.1概述 一、中断的概念: 例:当你正在看书时,电话铃响了,你会在书上作个记号,而后 去接电话,在通话期间,门铃又响了,你会告诉对方暂停一下,去开 门,而后回去接电话,通话结束后,在回去从作记号的地方开始看书。 (这当中不但有中断,而且有中断嵌套)。 即:中断是当CPU正在处理某件事情时,外部发生了另一事件, 请求CPU迅速处理,于是CPU暂时中断当前的工作,转去处理所发 生的事件:中断服务处理完成后,再回到原来被中断的地方,继续原 来的工作(如同篮球比赛的暂停)。中断过程如下图所示。 王序
二、中断的功能 中短的功能主要有: 1、实现CPU与外设的速度配合 CPU速度非常快,而外设(如打印机)的速度一般都不快,这 样CPU可以分时为外设服务,外设有请求,服务外设,无情求,执 行主程序。 2、实现实时控制 一旦有请求,CPU转向中断请求程序,实现实时控制。 3、实现故障的及时处理 旦有故障,转向故障中断请求,实现故障的及时处理 4、实现人机联系 通过外设(如键盘)请求中断。 5.2、MCS-51中断系统 8051中断系统的结构如下图: Tn0-0 n i- 特件查询 从上图可以看出,8051有5个中断源(N70,NT1,T0,T1,串口), 四个用于中断控制的特殊功能寄存器(TCON、SCON、E、IP)
一、中断源 5个中断源为: T0外部中断源0:由P3.2端口线引入,低电平或下降沿引起。 T外部中断源1:由P3.3端口线引入,低电平或下降沿引起 定时器/计数器T0溢出中断源:由T0溢出引起。 定时器/计数器T1溢出中断源:由T1溢出引起 T/R一串行VO中断:串行口的发送/接收中断源,串行端口完 成一帧字符发送/接收后引起。 二、中断控制 单片机内部有四个用于中断控制的特殊功能寄存器(TCON、 SCON、IE、IP) 中断请求标志 TC0N的中断标志位(P84:表4一1) TCON(88H) TF1 TRI TFO TRO IE1 ITI IEO ITO 各bit的工能如下: TF1:定时器/计数器T1溢出标志。当T1溢出时,由硬件自动置 1,并向CPU发出中断请求:当CPU执行完中断响应程序后,由硬 件清0。 TR1:定时器/计数器T1运行控制标志位。由软件设置或清除。 TR1=1时,启动T1:TR1=0停止T1。 TFO:定时器/计数器T0溢出标志,功能同TF1 TRO:T0运行控制标志位,作用同TR1
正1:外部中断1请求标志位。当检测到外部中断引脚(P3.3引 脚)上有中断请求信号时,由硬件置1:待CPU响应中断后,由硬 件清0。 T1:外部中断1方式控制标志。T1=0,当P3.3引脚为低电平 时触发外部中断1:T1=1,当P3.3引脚检测到下降沿信号时,触发 外部中断1。 正0:外部中断0请求标志位。当检测到P3.2引脚上有中断请求 信号时,由硬件置1;待CPU响应后,由硬件清0。 1T0:外部中断0方式控制标志。IT0-0,当P3.2引脚为低电平 时触发外部中断0;T0=1,当P3.2引脚检测到下降沿信号时,触发 外部中断0。 2)串口控制寄存器SC0N(P85:表4-2) SCON (98H)D7 D6 D5 D4 D3 D2 DI DO TIRI SCON的低两位控制串口的接受中断和发送中断,其含义如下: T:串口内部发送中断请求标志位。当串口发送完一个字符后, 由内部硬件使TI=1。产生中断请求标志。 I:串口内部接收中断请求标志位。当串口接收到一个字符后, 由内部硬件使RI=1。产生中断请求标志。 注意:CPU响应串口发送或接受中断时并不使TI或RI清O, RI和RI的清0必须由用户在中断服务程序中完成(用CLR TI等清0 指令),其原因是串行口的发送中断TI和接收中断RI,共用一个内 部中断源
3)中断允许控制寄存器E(P86:表4一3) EA ET2 ES ETI EXI ETO EXO IE (A8H) 各bit的工能如下: EA:中断允许/禁止总控制标志。EA=1,允许开中断:EA=O, 禁止中断。 ET2:定时器/计数器T2中断允许/禁止位。ET2=1允许中断, ET2-0禁止中断(52类型单片机才有)。 ES:串口中断允许/禁止位。ES=1允许串口中断,ES0时禁止。 ET1:定时器/计数器T1中断允许/禁止位。ET1=1,允许T1中 断:ET1=O,中断禁止。 EX1:外部中断1(P3.3)允许/禁止位。EX1=1允许外部中断1: EX1=0时禁止。 ETO:定时器/计数器T0中断允许/禁止位,ET0=1,允许T0中 断:ET0-0,中断禁止。 EX0:外部中断0(P3.2)中断允许位,EX0=1允许外部中断0: EX0=0时禁止。 4)中断优先控制寄存器IP(P86:表4一4) MCS一51单片机的中断请求优先级分为两级(高、低),由用户 通过P来设定。 XX PT2 PS PTI PXI PTO PXO 各bit的工能如下: PT2:设定定时器T2中断优先级,PT2=1时为高,PT2=0位低:
PS:串行口中断优先级,PS=1时为高优先级 PT1:定时器1中断优先级,PT1=1时为高优先级 PX1:外部中断1优先级,PX1=1时为高优先级 PT0:定时器0中断优先级,PT0=1时为高优先级 PX0:外部中断0优先级,PX0=1时为高优先级 X、X:为保留位 51单片机的中断优先级控制原则为:(P87) (1)MCS-51单片机复位后,P寄存器低6位全部被清0,将所 有中断源设置为低优先级中断,中断的优先要靠用户在软件中对P 设计。 (2)不同级中断请求同时发生时CPU响应的优先顺序:先高后 农 (3)处理低级又收到高级中断时:停低转高 (4)处理高级又收到低级或同级中断时:不理 (⑤)相同优先级中断请求同时发生时CPU响应的优先顺序为: (52中的T2)外部中断0→定时中断0-→外部中断1→定时中 断1→串口中断→定时中断2。 综上:中断控制的特点是: 1.中断标志位:TF1、TFO、IE1、IE0、RI、TI登记各中断源请 求信号:=1,有中断请求:=0,无中断请求。CPU响应中断后,该 中断标志自动清零。TL,RI标志必须软件清零。 2.外部中断触发方式选择位:T0、T1=1:负边沿触发中断请求: =0:低电平触发中断请求。 6
3.中断允许控制位:EA、ES、ET1、EX1、ET0、EX0=1开中断: =0关中断。 4.中断优先级控制位:PS、PT1、PX1、PT0、PX0,2级优先 级:=1为高优先级,=0为低优先级。同一优先级别按内部查询 顺序排列优先级: 高NTO、T0、NT1、T1、SIOT2低。 5.3中断处理过程 中断处理分为3个阶段:中断响应、中断处理、中断返回 一、中断响应 1、中断响应条件 MCS-51单片机响应中断有四个条件: ①、中断源要有请求: ②、寄存器E的总允许位EA=l,即CPU开中断; ③、申请中断的中断允许寄存器正相应位为1,即中断没有屏 蔽: ④、无同级或高级中断正在服务: ⑤、现行指令执行完最后一个机器周期。(即:要等到当前执行 的指令执行结束) ⑥、若现行指令为RETI或需要访问特殊功能寄存器E或P的 指令时,执行完该指令且该指令紧接着的下一条指令也要执行完。 2、中断响应过程 中断响应过程为: (1)中断得到响应后,自动清除中断请求标志(对串行口中断
请求标志,要用软件清除),由硬件自动将当前指令的下一条指令(就 是中断返回后将要执行的指令)的地址(即:程序计数器PC值)送 入堆栈—保护断点: (2)然后根据中断标记,将相应的中断入口地址送入程序计数 器PC,程序转到中断入口处执行中断服务程序一转入中断服务程 序。 各个中断源在程序存储器中的中断入口地址如下(P88:表4一5): 中断源 入口地址 外部中断0 0003H 定时器0溢出 000BH 外部中断1 0013H 定时器1溢出 001BH 串行口 0023H 定时器2溢出 002BH 说明:①、以上两步均由中断系统自动完成 ②、中断只保护了断点没保护现场(如:PSW的内容) 编中 断程序 ③、不能清除串口中断请求标志TI和RI 要时 考虑 ④、无法清除外部中断申请信号NT0和NTI 3、中断响应时间一指从开始查询中断请求标志位到转向中断 入口地址所需的机器周期数。在单级中断系统中,中断的响应时间最 短为3个机器周期,最长为8个机器周期
中断请求标志位查询占1个机器周期,若这个机器周期又恰好是 指令的最后一个机器周期,在这个机器周期结束后,CPU即响应中 断,产生硬件长调用LCALL指令,执行这条长调用指令需要2个机 器周期,这样,中断响应时间为3个机器周期。 中断响应时间最长为8个机器周期。如果CPU正在执行的是 RETI指令或访问P、正指令,则等待时间不会多于2个机器周期, 而中断系统规定把这几条指令执行完必须再继续执行一条指令后才 能响应中断,如这条指令恰好是4个机器周期长的指令(比如乘法指 令MUL或除法指令DIV),再加上执行长调用指令LCALL所需2 个机器周期,总共需要8个机器周期。 二、中断返回 中断返回指令:RETI=RET指令+通知CPU中断服务己结束。 中断程序的最后一条指令一定是RETI,执行这条指令后,CPU 将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序 的中断处继续往下执行了。 注意:中断前只保护了一个地址,而其它的所有东西都不保护, 所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用 它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数 据,就得自己保护起来。 三、中断请求的撤销 中断响应后,TCON和SCON中的中断请求标志要及时清除,否 则中断请求仍然存在。 1、定时中断有硬件自动撤销一(TF0或TF1=0):
2、外部中断的的撒销:对脉冲请求的外中断,由硬件自动撤销 (E0或E1=0),对低电平请求的外中断,除了由硬件自动撤销中 断标志位外(E0或正1=0),还应从电路上彻底撤销低电平。(因为 低电平不撤销,中断请求仍存在,待下一机器周期到来时,又会使中 断标志E0或E1=1置位)。实际电路一般为: P1.0 图中外部中断接在D触发器的CP上,来一个中断信号,则Q= D=0,中断请求,为了撤销中断,只要P1.0输出一个负脉冲,则Q =1,实现撤销。 3、串口中断标志位TI和I不能自行撤销,需要软件使其清0。 四、关于外部中断 外部中断由TCON寄存器的T0和T1决定着它的中断方式,T0 或T1=0,外中断为低电平触发方式,T0或T1=1,外中断为负脉 冲(下降沿)触发方式。 5.4、外部中断的扩充 在8051系列单片机中,一般只有两个外部中断请求输入端NT0, NT1。当某个系统需要多个外部中断源时,就需要对其扩展。 1、用定时器扩充外部中断 原理:8051有两个定时器,都有一个内部中断标志和外部计数 引脚(P3.4(14)和3.5(15),当定时器设置为计数方式时,计数 初始值设置为满量程FFH,一旦外部信号从P3.4或P3.5引脚输入一