您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 计算机硬件基础――第八章(中断系统)
1第六章中断系统第一节概述一.什么叫中断?为什么要采用中断?中断是指计算机在执行主程序时,由于计算机系统以外的原因中断主程序转去执行中断源要求服务程序,处理完毕后又返回主程序的这样一个过程。例:两种延时程序的比较:21.软件延时2.中断延时D15MS:MOVR5,#NAJMPMAINDD1:MOVR7,#MAJMPIT0PDD2:NOPMAIN:MOVSP,#60HNOPMOVTMOD,#01HNOPMOVTH0,#MDJNZR7,DD2MOVTL0,#NDJNZR5,DD1SETBTR0RETSETBEASETBET0SJMP$从上例可看出中断大大提高了CPU的工作效率。3利用中断技术可以使计算机具有更多的功能:1.可实现高速CPU与慢速外围设备之间的配合,提高CPU的效率。2.可实现实时处理,各控制参数可随时向CPU发出中断申请,CPU可作出快速响应、及时处理。3.可实现故障的紧急处理。4.便于人机联系。操作人员可用键盘、开关等实现人机联系,完成人的干予控制。4一.8031的中断请求源有5个中断源,它们是:串行口T1INT1T0INT0TCON(88H)中相应的位锁存它们的中断标志:TF1TR1TF0TR0IE1IT1IE0IT0其中:IT0:INT0触发方式选择,0:低电平触发,1:负跳变触发IE0:INT0选择负跳变触发时的中断标志,0:INT0未申请中断,1:INT0申请中断INT0选择低电平触发时此标志无用。IT1、IE1同上定义对INT1控制。注:串行口的中断标志在SCON中锁存。5第二节中断的控制本节要解决如下两个问题:1.CPU如何控制允许哪一个中断源发来的中断申请?2.如果有两个以上中断源同时发来中断申请,CPU先响应哪一个?6一.中断的允许和禁止由片内中断允许寄存器IE(A8H)控制:EAESET1EX1ET0EX0INT0T0INT1T1串行口CPUIE中相应哪一位置1,它所对应的中断源允许中断。7例:SETBEA;开放CPU中断,可接受中断申请SETBEX0;允许INT0中断CLRES;禁止串行口中断注:①复位时IE清零,即禁止所有中断,因此如果某中断源需要中断,程序中必有允许该中断源中断的语句,用SETB指令置位IE中相应的位。②必须逐级开放中断。即必须同时打开CPU中断,中断才能被CPU所接受。③IE中相应位置0,则该位对应的中断源被屏蔽,禁止其中断。8二.8031的中断优先级:由片内中断优先级寄存器IP控制IP(B8H)PSPT1PX1PT0PX0串行口T1INT1T0INT0IP中某位置1时,该位对应的中断源被定义为高优先级中断。例:SETBPT0;PT0置1,定时器0为高优先级中断9注:①高优先级中断源的中断信号可中断任何正在执行的程序,包括主程序或其它中断源的中断服务程序。②只能定义一个高优先级中断,其余四个中断源为同优先级中断。③同优先级中断同时发生中断请求时,内部查询序列决定了它们的优先级排队从高到低为:INT0,T0,INT1,T1,串行口。10第三节中断的响应过程CPU在每个机器周期顺序检查每个中断源一次,(对于6MHZ晶振,则为每2μS检查一次)如果发现有中断请求,则:1.先响应最高优先级中断源的中断请求。2.将发现中断信号时正在执行的那条指令执行完以后再响应中断。3.如果发现中断信号时正在执行的是与中断有关的指令,例如RETI,或是访问IE、IP的指令,则需要再运行一条指令后才响应中断。11例8000HMOVA,#06H①8002HMOVB,#05H8005HMULAB②8006HMOVIE,#05H8009HMOVR0,#30H800BH…………….中断信号发生在①处时,压入堆栈保存的是下条指令地址8005H中断信号发生在②处时,压入堆栈保存的是再下条指令地址800BH12中断响应的具体操作过程:1.首先将TCON中锁存的该中断源的中断标志清0。(注,SCON中的串行口发送接收中断标志RI、TI不能自动清0,只能用软件清0。)2.将程序计数器PC的内容(即断点地址)压入堆栈保存,然后将PC的内容修改为该中断源的中断入口地址。各中断源的中断入口地址固定为:INT00003HT0000BHINT10013HT1001BH串行口0023H133.在运行中断服务程序中,未尾的RETI指令即标志中断服务程序结束,要从中断返回原断点。返回时先将原来压入堆栈保存的断点地址弹回PC,CPU又从原来中断之处继续执行。14注:①响应中断过程中的栈操作均由计算机自动完成,注意必须在程序中建立堆栈。②在中断服务程序的开始应有保护现场的指令。即将中断服务程序中用到的各寄存器的内容压入堆栈保存,在中断结束之前弹回恢复,然后返回。这样就能保证返回原断点时各寄存器内容与中断服务前相同,使原程序能正确运行。③中断与调用子程序的异同:中断过程中由主程序转向中断服务程序的请求是由外部设备提出的,发生中断的时刻不确定,而在何处调用子程序则是由程序确定的。中断和调用子程序均有栈操作。15第四节讨论外部中断一.对申请中断的信号有何要求8031CPU在每个机器周期采样一次INT0,INT1脚。1.边沿触发:TCON中有外部中断的触发方式选择位和中断标志:IE1IT1IE0IT0当TCON中IT0或IT1为1时,选择边沿触发,当CPU在连续两个机周期采样INT0,INT1时,前一个周期采样为高电平,后一个周期采样为低电平,则判断该负跳变触发中断,即置位中断标志IE0、IE1,申请中断。当CPU响应该中断请求时,硬件自动将IE0或IE1清0,转入其中断入口。如果CPU暂时不能响应该中请求,由于中断标志己锁存于IE0、IE1,所以中断标志不会丢失。16因此,边沿触发方式对申请中断信号的要求是:要求申请中断信号负跳变宽度大于1个机器周期(以6MHZ晶振为例为2μs)因为产生一次中断申请负跳变信号,当CPU响应中断后中断标志会自动清零,所以不会产生多次中断动作。172.电平触发当TCON中IT0或IT1为0时,选择低电平触发,此时只要CPU采样到INT0或INT1脚为低电平则会触发中断。与边沿触发不同的是:低电平触发没有专门的中断申请标志,一旦CPU响应中断后也不能自动清除中断申请信号。如果CPU响应中断,在中断服务程序结束返回后,INT0或INT1脚上的申请中断的低电平信号仍未撤销,则会再次引起中断。因此,低电平触发适用于外部中断低电平输入,且中断服务程序中能清除外部请求源的情况18低电平触发对申请中断信号的要求是:1.请求中断的低电平信号必须保持足够长的时间,应一直到中断被响应为止。否则会丢失中断信号,尤其在多级中断的情况。2.请求中断的低电平信号也不能太长,应保证在中断服务程序返回之前撤除该中断信号,否则会产生多余的中断动作。解决办法可采用在单片机之外加一个触发器作为中断请求标志,并在软件中采取一定措施解决。例如:198031P3.0INT0CLRVCCDQGNDCLK单脉冲电路程序简述:SETBP3.0;在主程序中使P3.0=1当申请中断时单脉冲电路发出脉冲……..使Q=0低电平,申请中断,在没有从…….CLR脚输入复位脉冲前,Q一直保持CLRP3.0;进入中断服务程序低电平,只有当中断被响应,转入中…….一开始使P3.0发出断服务时,才由P3.0来的复位信号使…….负脉冲,使触发器Q=1清除中断信号。…….反转Q=1即清除中断请求。SETBP3.0;中断返回前P3.0=1+5v74LS7420二.一旦发生中断申请,隔多长时间会被响应CPU采样确认中断申请有效需一个机器周期,然后执行一个硬件子程序转入中断服务程序,这个硬件子程序本身占用二个机器周期,因此从产生中断请求到开始运行中断服务程序的第一条指令至少需要3个机器周期。如遇下列情况响应时间延长:1.发生中断信号时CPU正在执行某条指令,则要运行完该指令后才响应。这就要依该指令周期的长短增加2-3个机器周期2.发生中断信号时CPU正在执行的是与中断有关的指令,则要在该指令后再运行一条指令才响应。3.发生中断信号时,CPU正在处理同级或更高级中断,则要那个中断服务运行完中断返回后才响应,时间不定。一个单级的中断系统,通常响应的时间在3-8个机器周期之间。三.外部中断应用举例单步键21第五节多中断源系统设计当两个外中断源不够用时,可采取不同方法增加外中断源。一.利用计数引脚增加两个外中断源的方法p114页例1二.中断与查询相结合的方法p115页例2有关中断的软件设计举例:某一系统使用中断源INT0、T1、串行口,并设T1位高优先级,请写出有关中断的必要指令。22SETBEX0;允许INT0中断SETBET1;允许T1中断SETBES;允许串行口中断SETBEA;允许CPU接受中断SETBPT1;设T1位高优先级以下指令与上述5条指令等同MOVIE,#99H10011001MOVIP,#08H00001000
本文标题:计算机硬件基础――第八章(中断系统)
链接地址:https://www.777doc.com/doc-3880000 .html