第五章第五章 中断系统中断系统§5.1 中断概述中断概述 中中断断是是指指CPUCPU对系系统或或系系统外外发生生的的某某个个事事件件的的一一种种响响应过程程,,即即CPUCPU暂时停停止止现行行程程序序的的执行行,,而而自自动转去去执行行预先先安安排排好好的的处理理该事事件件的的服服务子子程程序序,,处理理结束束后后再再返返回回被被暂停停处继续执行原来的程序行原来的程序 实现这种种中中断断功功能能的的硬硬件件系系统和和软件件系系统统统称称为中断系中断系统引起引起CPU中断的根源,称为中断的根源,称为中断源中断源向中断源向CPU提出提出的中断请求的中断请求CPU暂时中断原来的事务暂时中断原来的事务A,转去处理事件,转去处理事件B对事件对事件B处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即断点断点),),称为中断返回实现上述中断功能的部件称为称为中断返回实现上述中断功能的部件称为中断系统中断系统(中断机构)中断机构) 一个单片机系统可能有多个中断源,而一个单片机系统可能有多个中断源,而单片机单片机CPU在某一时刻只能响应一个中断源在某一时刻只能响应一个中断源的中断请求,当多个中断源同时向的中断请求,当多个中断源同时向CPU发出发出中断请求时,则必须按照中断请求时,则必须按照“优先级别优先级别”进行进行排队,排队,CPU首先选定其中中断级别高的中断首先选定其中中断级别高的中断源为其服务,然后按排队顺序逐一服务,完源为其服务,然后按排队顺序逐一服务,完毕后返回断点地址,继续执行主程序。
毕后返回断点地址,继续执行主程序§ 分时操作分时操作CPU可以分时为多个可以分时为多个I/O设备服务,设备服务,提高了计算机的利用率;提高了计算机的利用率;§实时响应实时响应CPU能够及时处理应用系统的随机事能够及时处理应用系统的随机事件,系统的实时性大大增强;件,系统的实时性大大增强;§可靠性高可靠性高CPU具有处理设备故障及掉电等突发具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高性事件能力,从而使系统可靠性提高优点:优点:中断系中断系统应考考虑的基本的基本问题::①①中断源中断源:中断:中断请求信号的来源求信号的来源②②中中断断响响应与与返返回回::CPUCPU响响应中中断断后后转去去执行行特特定定中中断断服服务程程序序及及执行行完完毕后后返返回回原原执行的程序行的程序③③优先先级控控制制::多多个个中中断断提提出出请求求时,,CPU CPU 响响应的次序 中断与调用子程序的区别:⑴子程序的执行是由程序员事先安排好的(由一条调用子程序指令来转入),而中断服务程序是由随机的中断事件引起的;⑵子程序的执行受到主程序或上一级子程序的控制,而中断服务程序一般与被中断的程序毫无关系;⑶有可能发生多个中断事件同时请求CPU服务的情况。
中断的作用: 中断作为一项重要的计算机技术,在计算机中得到了广泛的应用中断技术实质上就是一种资源共享技术,其主要作用如下: ⑴ 中断技术能实现CPU与多个外部设备并行工作,提高了CPU的利用率及数据的输入/输出效率; ⑵ 中断技术能对计算机运行过程中某个事件的出现或突然发生的故障,做到及时发现并进行自动处理,即实现实时处理; ⑶ 中断技术能使我们通过键盘发出请求,随时对运行中的计算机进行干预,即可以实现人机联系; ⑷ 实现多道程序的切换运行; ⑸ 在多机系统中,实现各处理机之间的信息交换和任务切换§§5.5.2 2 AT89C51AT89C51中断系中断系统 5.2.1 中断源及中断系统构成中断源及中断系统构成 51子子系系列列提提供供5个个中中断断源源,,具具有有两两个个优优先先级级,,可可形成中断嵌套形成中断嵌套/INT0/INT0::外外部部中中断断0 0,,口口,,低低电平平或或下下降降沿沿触触发/INT1/INT1::外部中断外部中断1 1,口,低,口,低电平或下降沿触平或下降沿触发T0T0:定:定时//计数器数器0 0中断,中断,T0T0回零溢出触回零溢出触发TF0TF0标志。
志T1T1:定:定时//计数器数器1 1中断,中断,T1T1回零溢出触回零溢出触发TF1TF1标志TITI//RIRI::串串行行I/OI/O中中断断,,串串行行口口完完成成一一帧数数据据发送送//接接收收后触后触发 80C51的中断系统有的中断系统有5个中断源,个中断源,2个优先级,可实个优先级,可实现二级中断嵌套现二级中断嵌套 5.2.2 中断标志与中断控制中断标志与中断控制 1、中断锁存寄存器、中断锁存寄存器TCON :: TCON也也为定定时//计数器的控制寄存器,数器的控制寄存器,锁存存锁存存标志字节地址地址88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 1、中断锁存寄存器、中断锁存寄存器TCON ::TF1::T1溢出中断溢出中断标志志TF0::T0溢出中断溢出中断标志志 1-有中断-有中断请求求IE1::INT1中断中断请求求标志志 0-无中断-无中断请求求IE0::INT0中断中断请求求标志志IT1::INT1触触发控制位控制位 1-下降沿触-下降沿触发IT0::INT0触触发控制位控制位 0-低-低电平触平触发2、串行口控制寄存器、串行口控制寄存器SCON::§TI,串行口发送中断标志位。
当,串行口发送中断标志位当CPU将一个发送将一个发送数据写入串行口发送缓冲器时,就启动了发送过数据写入串行口发送缓冲器时,就启动了发送过程每发送完一个串行帧,由硬件置位程每发送完一个串行帧,由硬件置位TICPU响应中断时,不能自动清除响应中断时,不能自动清除TI,,TI必须由软件清必须由软件清除§RI,串行口接收中断标志位当允许串行口接收,串行口接收中断标志位当允许串行口接收数据时,每接收完一个串行帧,由硬件置位数据时,每接收完一个串行帧,由硬件置位RI同样,同样,RI必须由软件清除必须由软件清除3、中断允许寄存器、中断允许寄存器IE ::EA: 总中断控制位中断控制位ES:串行口中断控制位:串行口中断控制位ET1::T1中断控制位中断控制位EX1::INT1中断控制位中断控制位ET0::T0中断控制位中断控制位EX0::INT0中断控制位中断控制位以上各位:以上各位:1-允-允许中断;中断;0-禁止中断-禁止中断 用于打开或关断各中断源,字用于打开或关断各中断源,字节地址地址A8H 4、中断优先级寄存器、中断优先级寄存器IP ::PS:串行口中断:串行口中断优先先级控制位控制位PT1::T1中断中断优先先级控制位控制位PX1::INT1中断中断优先先级控制位控制位PT0::T0中断中断优先先级控制位控制位PX0::INT0中断中断优先先级控制位控制位以上各位:以上各位:1-高-高优先先级;;0-低-低优先先级。
用于用于设定各中断源的定各中断源的优先先级,字,字节地址地址B8H 中断基本中断基本规则 ::①①任一种中断,不能被同任一种中断,不能被同级或低或低级中断所中断;中断所中断;②②高高级中断能打断低中断能打断低级中断(中断嵌套);中断(中断嵌套);③③若同若同时有几个同有几个同级中断源提出申中断源提出申请,,CPU响响应的的顺序序为((查询):):INT0(高)→T0→INT1→T1→RI/TI(最低) 中断处理过程 中断中断处理理过程可分程可分为4 4个个阶段:段:中断中断请求求,,中中断断查询和响和响应,,中断中断处理理,,中断返回中断返回 1.1.中断中断请求求 中断中断请求是由硬件完成的,定求是由硬件完成的,定时中断和串行中断和串行中断在中断在单片机芯片内部自片机芯片内部自动完成,中断完成,中断请求完成求完成后,相后,相应的中断的中断请求求标志位被直接置位志位被直接置位 外部中断的中断外部中断的中断请求信号要分求信号要分别从()和从()和 (P3.3) 2(P3.3) 2个引脚由片外个引脚由片外输入片内中断控制系入片内中断控制系统在每个机器周期的在每个机器周期的S5P2S5P2对引脚信号引脚信号进行采行采样根据根据采采样的的结果来果来设置中断置中断请求求标志位的状志位的状态,中断,中断请求完成后,中断求完成后,中断请求求标志位被置位。
志位被置位2.2.中断中断查询和响和响应 中断的中断的查询和中断的响和中断的响应也是由硬件自也是由硬件自动完成的⑴ ⑴ 所所谓查询: :就是由就是由CPUCPU测试TCONTCON和和SCONSCON中的中的各各标志位的状志位的状态,以确定有无中断,以确定有无中断请求以及求以及是那一个中断是那一个中断请求在程序求在程序执行行过程中,中程中,中断断查询是在指令是在指令执行的每个机器周期中不停行的每个机器周期中不停地重复地重复进行的3 中断响应条件中断响应条件•中断源有中断请求;中断源有中断请求;• 此中断源的中断允许位为此中断源的中断允许位为1;;• CPU开中断(即开中断(即EA=1)同时满足时,同时满足时,CPU才有可能响应中断才有可能响应中断 此外,若某个中断源通此外,若某个中断源通过编程程设置置处于被打开于被打开的状的状态,并,并满足中断响足中断响应的条件,但是,若遇到的条件,但是,若遇到以下任一情况,以下任一情况,则单片机仍不能响片机仍不能响应此中断:此中断:① ① 当前当前CPUCPU正在正在处理比申理比申请源高源高级或与申或与申请源同源同级的中断② ② 当前正在当前正在执行的那条指令没有行的那条指令没有执行完。
行完③ ③ 正在正在访问IEIE、、IPIP中断控制寄存器或中断控制寄存器或执行行RETIRETI指指令并且,只有在令并且,只有在执行行这些指令后至少再些指令后至少再执行一行一条指令条指令时,才能接受中断,才能接受中断请求 由于上述原因而未能响由于上述原因而未能响应的中断的中断请求,待上求,待上述原因消失述原因消失时该中断中断请求求标志却已消失,那么志却已消失,那么该中断不再被响中断不再被响应也就是说,,MCS-51MCS-51对查询的的结果不作果不作记忆,,查询过程在下个机器周期重新程在下个机器周期重新进行4 4 中断响中断响应 中断响中断响应是是对中断源提出的中断中断源提出的中断请求的接求的接受,在中断受,在中断查询中,当中,当查询到有效的中断到有效的中断请求求时,,紧接着就接着就进行中断响行中断响应中断响应的主要的主要内容是由硬件自内容是由硬件自动生成一条生成一条长调用指令用指令LCALL LCALL addr16addr16,,这里的里的addr16addr16就是程序存就是程序存储器中相器中相应的中断服的中断服务程序地址区的入口地址程序地址区的入口地址。
中断入口地址中断入口地址 :: 0003H :外部中断:外部中断0服服务程序入口(程序入口(INT0)) 000BH :定:定时器器0中断服中断服务程序入口(程序入口(T0)) 0013H :外部中断:外部中断1服服务程序入口(程序入口(INT1)) 001BH :定:定时器器1中断服中断服务程序入口(程序入口(T1)) 0023H :串行口中断服:串行口中断服务程序入口程序入口 5 中断响应时间中断响应时间 ::一般情况下:一般情况下: 中中断断请求求 响响应中断中断 ((3~~8个机器周期)个机器周期) 中断响中断响应时间是指从中断响是指从中断响应有效(有效(标志位置志位置1 1)到)到转向其中断服向其中断服务程序地址区的入口地址所需的程序地址区的入口地址所需的时间 分析可知,在分析可知,在单中断源的中断系中断源的中断系统中,中断响中,中断响应时间至少要用至少要用3 3个机器周期,最多个机器周期,最多为8 8个机器周期个机器周期 在一般在一般应用情况下,中断响用情况下,中断响应时间长短通常无需短通常无需考考虑,但是在需要精确定,但是在需要精确定时的的应用中,用中,为了保了保证定定时的精确,往往要估算中断响的精确,往往要估算中断响应的的时间。
6、中断响应过程、中断响应过程 ::响响应中断中断↓自自动清除中断清除中断请求求标志(志(IE0、、IE1、、TF0、、TF1,, 但但RI/TI需由需由软件清)件清)↓保留断点(当前保留断点(当前PC值入入栈))↓中断入口地址中断入口地址→PC↓执行中断服行中断服务程序程序↓中断返回(中断返回(RETI))↓恢复断点(原恢复断点(原PC值出出栈))8.中断请求的撤销 CPUCPU响响应中断后,中断后,应撤撤销该中断中断请求,否求,否则会引起会引起再次中断再次中断Ø对于定于定时中断,在中断,在CPUCPU响响应中断后,由中断机构硬件中断后,由中断机构硬件自自动撤撤销中断中断请求求标志志TF0TF0和和TF1TF1;;Ø对于脉冲方式触于脉冲方式触发的外中断,由于脉冲信号的外中断,由于脉冲信号过后就后就消失了,也是在响消失了,也是在响应中断后由中断机构硬件自中断后由中断机构硬件自动撤撤销中断中断请求求标志志IE0IE0和和IE1IE1;;Ø对电平触平触发的外中断,的外中断,CPUCPU响响应中断后,必中断后,必须立即撤立即撤除引脚上的低除引脚上的低电平触平触发信号才能由硬件自信号才能由硬件自动撤撤销中断中断请求求标志志IE0IE0和和IE1IE1;;Ø对于串行中断,于串行中断,CPUCPU响中断后,中断响中断后,中断请求求标志志RIRI和和TITI不会被自不会被自动撤撤销,它,它们要用要用软件来撤件来撤销,,这在在编写串写串行中断服行中断服务程序程序时应以注意。
以注意9.9.中断中断处理理 中断中断处理理应根据具体要求根据具体要求编写中断服写中断服务程序在程序中要注意以下程序在程序中要注意以下2 2个个问题:: ⑴ ⑴ 现场保保护和和现场恢复恢复; ; ⑵ ⑵ 关中断和开中断关中断和开中断 10.中断返回 中断服中断服务程序的最后一条指令必程序的最后一条指令必须是中断是中断返回指令返回指令RETIRETI,,CPUCPU执行行这条指令条指令时,把响,把响应中中断断时置位的置位的优先先级触触发器复位,再从堆器复位,再从堆栈中中弹出断点地址送出断点地址送PCPC,使程序回到断点,使程序回到断点处重新重新执行行先前被中断了的程序由于先前被中断了的程序由于RETIRETI的作用不同于的作用不同于RETRET,所以中断的返回不能用,所以中断的返回不能用RETRET指令来替代指令来替代§ § 中断系中断系统的的应用用 AT89C51中断功能的应用主要包括两方中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服硬件电路的设计,二是初始化程序和中断服务程序的编写。
下面通过几个应用举例加以务程序的编写下面通过几个应用举例加以理解[例例]利用外中断实现程序的单步执行利用外中断实现程序的单步执行 AT89C51内内部部有有4 KB字字节节的的Flash存存储储器器,,用用户户编编写写好好的的程程序序用用简简单单的的程程序序写写入入器器很很容容易易写写入入和和擦擦除除,,在在没没有有开开发发系系统统的的条条件件下下,,利利用用外外中中断断实实现现程程序序的的单单步步运运行行为用户调试程序带来一定的方便为用户调试程序带来一定的方便 外中断外中断/INT0设为电平触发方式,中断服务程序为:设为电平触发方式,中断服务程序为: ORG 0003H JNB P3.2,$ JB P3.2,$ RETI原理:当原理:当CPU正在处理某中断时,不能响应同级正在处理某中断时,不能响应同级别中断,且在执行别中断,且在执行RETI返回指令后,还必须多执返回指令后,还必须多执行一条指令才能响应新的中断行一条指令才能响应新的中断 [例例] 扩展外部中断源:扩展外部中断源: 在在变变频频调调速速器器中中都都设设有有过过流流(OC)、、过过压压(OV)、、欠欠压压(UV)、、过过热热(OH)这这四四种种故故障障保保护护,,当当任任一一故故障障发发生生时时,,都都要要立立刻刻停停机机处处理理,,避避免免故故障障范范围围扩扩大大。
这这种种情情况况必必须须采采用用中中断断方方式式,,使使单单片片机机立立刻刻响响应应中中断断处处理理试试设设计计其其硬硬件件电电路路和和软软件件程程序 根根据据要要求求,,四四个个故故障障相相当当四四个个中中断断源源,,可可利利用用中中断断查查询询方方法法,,将将四四个个中中断断源源归归结结为为一一个个中中断断请请求求,,同同时时四四个个故故障障信信号号引引到到P1口口的的四四个个输输入入端端,,然然后后在在中中断断程程序序中中查查询询P1口口,,确确定定是是哪哪一一个个故故障障申申请请的的中中断断电电路路如如图图5-8所所示示一一旦旦发发生生故故障障,,单单片片机机必必须须响响应应中中断断,,因因此此,,该该中中断断必必须须设设置置成成最最高高级级中中断断在在中中断断程程序序中可以显示故障信息中可以显示故障信息图5-8 扩展4个外中断源电路主程序和中断服务程序如下:主程序和中断服务程序如下: ORG0000HLJMP ZCX1 ;;转主程序主程序 ORG 0013HLJMP INT1 ;;转中断程序中断程序 ORG 0100HZCX1::MOV SP,,#30H ;置堆;置堆栈指指针MOV IP,,#04H ;;设 为最高最高级CLR IT1 ;;设 为电平触平触发SETB EA ;开中断;开中断SETB EX1ZCX2:其他:其他处理程序理程序…… AJMP ZCX2 ORG 0200HINT1: : PUSH PSW ;中断服务程序;中断服务程序 PUSH ACC,,XI1 ;为;为1,转,转OC中断服务程序中断服务程序 ,,XI2 ;为;为1,转,转OV中断服务程序中断服务程序 ,,XI3 ;为;为1,转,转UV中断服务程序中断服务程序 ,,XI4 ;为;为1,转,转OH中断服务程序中断服务程序INRET::POP ACC POP PSW RETI XI1:: AJMP OC XI2:: AJMP OV XI3:: AJMP UV XI4:: AJMP OH OC::… … ;;OC处理子程序处理子程序(略略) AJMP INRET OV::… … ;;OV处理子程序处理子程序(略略) AJMP INRET UV:: … … ;;UV处理子程序处理子程序(略略) AJMP INRET OH::… … ;;OH处理子程序处理子程序(略略) AJMP INRET 例例:下:下图是是单片机控制的数据片机控制的数据传输系系统。
将将P1P1口口设置成数据置成数据输入口,外部入口,外部设备每准每准备好一个数据好一个数据时发出一个正脉冲,使出一个正脉冲,使D D触触发器器Q Q端置端置0 0,向送入一个,向送入一个低低电平中断平中断请求信号中断响求信号中断响应后,后,为了撤了撤销中断中断请求,可利用向求,可利用向D D触触发器的直接置位端器的直接置位端SDSD输出一个出一个负脉冲,使脉冲,使D D触触发器的器的Q Q端置端置1 1,从而撤,从而撤销了低了低电平的中平的中断断请求信号 程序程序编制如下:制如下: ORG 0000H ORG 0000HSTART: LJMP MAIN START: LJMP MAIN ;跳;跳转到主程序到主程序 ORG 0003H ORG 0003H LJMP INT0 ;LJMP INT0 ;转向中断服向中断服务程序程序 ORG 0030H ORG 0030H ;主程序;主程序MAIN: CLR IT0 ;MAIN: CLR IT0 ;设置置电平触平触发方式方式 SETB EA SETB EA ;;CPUCPU开放中断开放中断 SETB EX0 ; SETB EX0 ;允允许外中断外中断0 0中断中断 MOV DPTR,#1000H MOV DPTR,#1000H ;置数据区地址;置数据区地址针 …… …… ORG 0100H ORG 0100H ;中断服;中断服务程序程序 INT0: PUSH PSW INT0: PUSH PSW ;保;保护现场 PUSH A PUSH A CLR P3.0 CLR P3.0 ;由;由输出出负脉冲脉冲 NOP NOP ;; NOP NOP ;; SETB P3.0 SETB P3.0 ;; MOV A,P1 MOV A,P1 ;;输入数据入数据 MOVX MOVX @@DPTR,A DPTR,A ;存入数据存;存入数据存储器器 INC DPTR INC DPTR ;修改数;修改数针 …… …… POP A POP A ;恢复;恢复现场 POP PSW POP PSW ;; RETI RETI ;中断返回;中断返回 例例::图5-35-3的中断的中断线路可路可实现多个故障。
当多个故障当系系统无故障无故障时,,4 4个故障源个故障源输入端全入端全为低低电平,平,显示灯全熄示灯全熄灭,只有当某部分出,只有当某部分出现故障,其相故障,其相应的的输入入线才由低才由低电平平变为高高电平从而引起中平从而引起中断中断服断中断服务程序的任程序的任务就是判定故障源,并就是判定故障源,并进行相行相应的灯光的灯光显示 程序程序编制如下:制如下: ORG 0000H ORG 0000H AJMP MA1 AJMP MA1 ;;转向主程序向主程序 ORG 0003H ORG 0003H AJMP SERVE AJMP SERVE ;;转向中断服向中断服务程序程序MA1: MOV P1,#55H MA1: MOV P1,#55H ;全部指示灯;全部指示灯灭,并,并为读入故障信入故障信 ; ;号作准号作准备 SETB IT0 SETB IT0 ;;选取外中断取外中断为脉冲触脉冲触发方式方式 SETB EX0 SETB EX0 ;允;允许外中断外中断0 0中断中断 SETB EA SETB EA ;开;开CPUCPU中断中断LOOP: MOV A,P1 LOOP: MOV A,P1 ;; ANL A,#55H ANL A,#55H ;; JNZ LOOP JNZ LOOP ;有故障信号;有故障信号转LOOPLOOP MOV P1,#55H MOV P1,#55H ;无故障信号灯全;无故障信号灯全灭,, ; ;并并为读入故入故 障信号作准障信号作准备 SJMP LOOP SJMP LOOP ;等待中断;等待中断SERVESERVE::JNB P1.0,L1 JNB P1.0,L1 ;中断服;中断服务程序,程序,查询故障源,若有故障,将故障源,若有故障,将 ;相;相应的灯点亮的灯点亮 SJMP L2 SJMP L2L2: JNB P1.2,L3L2: JNB P1.2,L3 SJMP L4 SJMP L4L4: JNB P1.4,L5L4: JNB P1.4,L5 SJMP L6 SJMP L6L6: JNB P1.6,L7L6: JNB P1.6,L7 SJMP L8 SJMP L8L8: RETIL8: RETI本章到此结束。