资源描述
第 七 章 微机中断系统,7-1,中断概念,7-2,中断系统功能,7-3 8086,中断系统,7-4,可编程中断控制器,8259A,7-1,中断概念,7.1.1,什么叫中断,当,CPU,正常运行程序时,由于外设,(,或,CPU,内部,),发生事件的请求,引起,CPU,暂停正在运行的主程序,转去执行该事件指定的另一个程序,中断服务程序,在中断服务程序执行完毕后,再返回主程序,并从被中止的地方开始继续执行,这一过程称为中断。,中断过程包含中断申请、中断响应、中断服务、中断结束、中断返回五个子过程。,中断申请:是指发生事件后,外设,(,或,CPU,内部,),向,CPU,提出申请,要求,CPU,进入启动中断处理过程,中断申请是整个中断过程的起点。,中断响应:,CPU,接收到中断申请以后,在执行完当前指令后,保存下一条要执行的指令的逻辑地址(,CS:IP,),返回地址,然后转到中断服务程序执行。,中断服务:执行中断服务程序实现规定任务。,中断结束:中断服务完毕后要清除本次中断占用的资源,为下一次中断过程服务。,中断返回:结束后返回到主程序继续运行。,7.1.2,使用中断的优点,1,、提高,CPU,的利用率,当高速,CPU,与低速外设进行数据交换时,如果让,CPU,等待外设,将不能充分利用,CPU,的性能。,采用中断方式,,CPU,不必再等待外设,而是运行其它程序实现其它功能。当外设准备好以后,向,CPU,提出中断申请,,CPU,在执行中断服务程序过程中实现与外设交换信息,交换完数据后,,CPU,再继续完成其它功能。,外设与,CPU,并行运行,提高整体性能。,7.1.2,使用中断的优点,2,、实时处理,当某个紧急事件发生时,可立即向,CPU,发出中断请求信号,,CPU,可立即停止当前程序的执行,转去执行该紧急事件指定的中断服务程序,对事件作出及时响应。,避免因执行较长的程序段而导致重要事件得不到及时处理。,7.1.2,使用中断的优点,3,、故障处理,CPU,在运行过程中,可能会出现一些事先无法预料的情况,或出现一些故障,如运算的溢出等。,利用中断系统,可以通过运行中断服务程序及时处理。提高,CPU,的利用率。,7.1.3,中断源,能够提出中断申请的事件称为中断源,可以是内部事件,也可以是外部事件。,内部事件指,CPU,执行中的特殊情况,如运算中产生的某些错误,(,除法出错、运算溢出等,),,或者执行程序预先安排的中断指令,软中断。,外部中断须通过,CPU,的中断输入管脚引入。有:,输入、输出设备。如键盘、纸带读入机、打印机、磁盘等。,实时时钟。,为调试程序而设置的中断源。,7.1.3,中断源,外部中断源可分为不可屏蔽中断和可屏蔽中断两类。,不可屏蔽中断通过不可屏蔽中断输入管脚提出申请,在满足中断响应条件下,一旦在该引脚上产生请求,,CPU,必须响应该请求,而不能不处理。,可屏蔽中断通过可屏蔽中断输入管脚引入。对于可屏蔽中断申请,,CPU,可以通过软件指令,设置是否响应该类申请。对于不希望处理的中断源,用软件设置不响应其中断申请,称为屏蔽该中断。,7.2,中断系统功能,中断系统是指实现中断功能的硬件和软件的总和,通常由中断接口电路以及,CPU,的与中断有关的部件和指令共同组成。,对于不同计算机系统,中断系统的构成差别很大,但都具有基本功能。,一、实现中断与返回,通常设置有中断请求寄存器,用来记录各个中断源的中断请求状态。,能够对中断源提出的中断请求进行屏蔽。,能决定,CPU,是否响应某个中断请求。,能够区别不同的中断源,并且能准确地找到对应的中断服务程序。确定中断源通常有查询中断及矢量中断两种方法。,中断处理完毕后,能正确返回主程序,并且不影响主程序的运行。,二、实现中断优先权排队,系统中常有多个中断源,会出现两个或更多个中断源同时提出中断请求的情况,这就要求设计者事先根据轻重缓急,给每个中断源确定一个级别,称为中断优先权。,当多个中断源同时发出中断申请时,能确定其中优先权最高的中断源,先响应它的中断请求。,在优先级别最高的中断源处理完毕以后,再响应级别较低的中断。,中断优先权的实现有软件查询和硬件排队两种方法。,软件查询中断优先级,CPU,在中断查询程序中依次查询各个设备的中断请求标志,查到哪个外设有请求中断,就转入哪个外设的中断服务程序。,对于同时发生的多个中断请求,先查询的中断请求优先得到响应,查询的次序,决定了外设优先级别的高低。,查询时间较长,不适合中断源较多的情况。,硬件查询中断优先级,菊花链法,多个外设的中断请求信号并联形成“线或”逻辑,当任一外部设备申请中断后,中断请求信号都会送到,CPU,的中断请求输入端。,中断应答信号沿着菊花链线路以串联关系向后传递。当某个外设发出了中断申请,它的中断请求信号使得菊花链逻辑电路输出的中断请求只能为“,1”,,这就阻塞了中断应答向后传递的通路,后面的外设接口不能接收到中断应答信号。,由于接收不到中断应答信号,后面的外设不能够送出自身信息,其中断请求就不能得到响应。,1,1,若某个外设有中断请求,=1,1,菊花链输出只能,=1,三、实现中断嵌套,当,CPU,正在进行中断服务时,若有优先级更高的中断源提出中断申请,则,CPU,应该能暂停正在执行的中断服务程序,再次响应中断,转到更高优先级的中断服务程序去执行,称为中断嵌套。,当高级的中断处理结束后,再返回刚刚被中止的中断服务程序继续执行。,若后发出中断申请的中断源的优先级低于正在处理的中断源的优先级,则,CPU,就暂不响应新中断请求,结束并返回以后再去响应新中断请求。,中断系统能够比较正在服务的中断源与还未得到服务的中断请求的优先权级别高低。常用中断服务寄存器记录当前正在服务的中断源。,四、,CPU,响应中断的条件和过程,中断源提出申请:中断源的请求信号必须保持有效,直到被中断系统检测到,并向,CPU,提出中断请求。,中断请求没有屏蔽:该中断源的中断请求信号没有被屏蔽,其请求直到,CPU,的申请通路畅通,,CPU,才能检测到该中断请求。,中断是开放的:,CPU,的中断响应是开放的。,系统总线没有被占用:总线被,DMA,控制器占用时,,CPU,不能响应中断请求。,当前指令执行完毕:,CPU,只有在执行完一条指令以后,才能响应中断请求,不会在指令执行过程中响应中断。,7.3 8086,中断系统,以,8086/8088 CPU,为例,介绍中断系统的具体实现,按照功能划分为可屏蔽中断与非屏蔽中断。,可屏蔽中断,:,CPU,内部设有一个中断允许触发器,IF,,当,IF=1,时可屏蔽中断请求能够获得响应,当,IF=0,时不允许,CPU,响应可屏蔽中断请求。,IF,的置位和复位可通过开中断指令和关中断指令来实现。,每次中断响应期间,,IF,由硬件自动清零。,非屏蔽中断,:,非屏蔽中断不受中断允许触发器,IF,的控制,当它有中断请求时,若,CPU,符合响应中断条件,必须响应该请求。,一、,8086,中断分类,按照来源可分为外部中断和内部中断。,内部中断:,又称软件中断,都不能通过,IF=0,来屏蔽。,由中断指令,INT n,引起的中断:指令中,n,指出了中断类型号,由,CPU,的某些运算错误引起的中断:,除法错中断类型号为,0,,除数为零错误;,溢出中断类型号为,4,,专用指令为,INTO,为调试程序设置的中断:,单步中断:中断类型,1,,实现单步运行。单步中断是在控制标志位,TF,1,时,每条指令执行后,,CPU,自动产生的类型,1,中断。注意:在每次响应中断时,,CPU,的,TF,与,IF,一起都自动由硬件清零。,断点中断:中断类型,3,。在调试程序时,可用调试命令设置断点。当,CPU,执行到断点时便产生断点中断。,外部中断:,也称为硬件中断,是由外部的硬件产生的。,不可屏蔽中断请求,从引脚,NMI,引入,采用上升沿触发,上升沿之后要维持两个时钟周期高电平才使申请有效。,不可屏蔽中断请求的中断类型号为,2,。,一旦有不可屏蔽中断请求,,CPU,必须予以内应。,可屏蔽中断请求,由引脚,INTR,引入,采用电平触发,高电平有效,,INTR,信号的高电平必须维持到,CPU,响应中断才结束。,当外设有中断申请时,在当前指令执行完后,,CPU,首先查询,IF,位,若,IF,0,,,CPU,就禁止响应任何外设可屏蔽中断;若,IF,1,,,CPU,就允许响应外设的可屏蔽中断请求。,IF,的状态由指令来设置,指令,STI,设置中断允许位,使,IF,1,,称为开中断;指令,CLI,禁止中断允许位,使,IF,0,,称为关中断。,可屏蔽中断请求要得到响应有基本两个条件:一个是外设中断请求没有被屏蔽,一个是,CPU,允许响应中断,即,IF,必须等于,1,。,IBM PC,机中规定优先级从高到低的次序为,内中断,(,除法错,,INTO,,,INT n),。,不可屏蔽中断,(NMI),。,可屏蔽中断,(INTR),。,单步中断。,8086/8088,系统采用矢量中断方式,可处理,256,个中断源,对应类型号为,00FFH,。,每个中断服务程序第一条指令的首地址称为中断服务程序,入口地址,,入口地址的逻辑地址称为该中断源的,中断向量,。,规定存储器物理地址等于,00000H003FFH,的,1k,字节空间存放,256,个中断向量,称中断向量表。,中断向量按照中断类型号从小到大的顺序依次存放,每个中断向量占,4,个字节,低,2,个字节存放段内偏移地址,高,2,个字节存放段地址。,二、,8086,中断向量表,对于,n,号中断,由,n 4,即可得到相应中断向量存放单元的首地址,,4n,和,4n+1,单元中的内容就是中断向量的段内偏移地址,,4n+2,和,4n+3,单元中内容就是中断向量的段地址。,在响应中断过程中,,CPU,依据中断类型号,n,,把,4n,和,4n+1,单元中的内容装入指令指针寄存器,IP,,把,4n+2,和,4n+3,单元中内容装入代码段寄存器,CS,,即可转入中断处理程序。,IBM PC,中断向量表,向量起始地址,存储单元内容,中断类别,00000H,0,号中断入口(除法出错),专用中断(,5,个),00004H,1,号中断入口(单步中断),00008H,2,号中断入口(,NMI,中断),0000CH,3,号中断入口(断点中断),00010H,4,号中断入口(溢出中断),00014H,5,号中断入口,系统中断(,27,个),0007CH,31,号中断入口,00080H,32,号中断入口,用户使用(,244,个),003FCH,255,号中断入口,例,7-1,设物理地址,00190H00193H,单元的内容依次为,10H,、,20H,、,30H,、,40H,。某中断的中断类型号为,64H,。,则,CPU,转向中断服务程序的过程为:,(1),取中断类型号,64H,(2),计算中断向量地址,64H*4,190H,(3),取,190H,中存放的字送入,IP,,,IP,2010H,;取,192H,中存放的字送入,CS,,,CS,4030H,(4),转向逻辑地址为,4030H2010H,开始的中断服务程序去运行,中断向量表应用举例,例,7-2,设中断类型号,N,的中断入口地址标号为,SRV,,填写中断向量表。,在主程序中可写入以下指令:,MOV AX,,,0,MOV ES,,,AX,MOV BX,,,N*4,;中断型号,N*4,MOVAX,,,OFFSET SRV,;取中断入口偏移地址,MOVESBX,,,AX,;偏移地址送(,4N,,;,4N+1,)单元,MOVAX,,,SEG SRV,;取中断入口的段基址,MOVESBX+2,,,AX,;段基址送(,4N+2,,;,4N+3,)单元,STI,;开中断,利用,DOS,功能调用设置中断向量方法:,把中断类型号送入,AL,中,中断向量的段地址送,DS,,段内偏移地址送,DX,。,把,AH,设置为,25H,,它规定,DOS,功能调用的功能是设置中断向量。,执行,INT 21H,指令即可。,利用,DOS,功能调用取中断向量方法:,把中断类型号送入,AL,中,把,AH,设置为,35H,,它规定读取中断向量功能。,执行,INT 21H,指令。,返回中断向量存放在,ES,:,BX,中。,对于类型号固定的专用中断源,如除法出错,单步中断,不可屏蔽中断,NMI,,断点中断和溢出中断,,CPU,分别自动提供中断类型号,04,。,对于用户自己确定的软件中断,INT n,,类型号由,n,决定。,对外部可屏蔽中断,INTR,,由中断接口电路提供中断类型号。,中断类型号的获取,外设向,CPU,发出中断请求的时间是随机的,,CPU,在每条指令的最后一个机器周期的最后一个,T,状态去采样中断请求输入线,INTR,。,当,CPU,在,INTR,引脚上接收到一个有效的中断请求信号,且,CPU,内部中断允许触发器,IF=1,,则在当前指令执行完后,CPU,进入中断响应周期,开始响应中断过程。,对可屏蔽中断请求,,CPU,的中断响应过程包含两个连续的总线周期,每个总线周期包括,4,个时钟周期,T1T4,。,三、,8086,响应中断过程,8086/8088,中断响应总线周期时序图,在第,1,个总线周期中,CPU,将地址数据总线置于浮动状态,在,T2T4,期间发出中断响应信号,INTA,给中断接口电路,表示,CPU,响应此中断请求。,禁止来自其它总线控制器的总线请求。,在第,2,个总线周期中,CPU,向中断接口电路发第,2,个,INTA,信号。,中断接口电路在,T2,和,T3,周期将一个字节的数据送到数据总线低,8,位,D7D0,。,CPU,读取该值作为中断类型号,N,。,随后,CPU,的动作,将标志寄存器,PSW,的值入栈。,将,PSW,中的中断允许标志,IF,和单步标志,TF,清,0,,以屏蔽外部其它中断请求,避免,CPU,以单步方式执行中断处理子程序。,保护断点,将下一条将要执行的指令的段地址,CS,和指令指针,IP,的值依次入栈,以保证中断处理完毕后,能正确返回到主程序继续执行。,根据刚刚获得的中断类型号到中断向量表中找到中断服务程序入口地址,转入相应中断服务子程序。,几点说明,软件中断和非屏蔽中断不按照这种时序来响应。,8088,、,8086,都从低,8,位数据线上读取中断类型号,中断接口电路应接在数据总线的低,8,位上。,进入中断服务程序时,,CPU,使,IF=0,,,TF=0,。,CPU,有时要再执行完下一条指令才响应外部中断。例如,,CPU,正在执行封锁指令,或者执行向段寄存器传送数据的指令,或者,STI,和,IRET,。,在两个中断响应总线周期中,地址数据状态总线是浮空的,但是,M/IO,指示外设操作,,ALE,在每个总线周期的,T1,状态输出一个高电平脉冲。,对重复前缀的串指令作为单指令处理。,允许在等待指令执行过程中进入中断。,关于软件中断,软件中断由程序设定,没有随机性,它不受中断允许标志位,IF,的影响,中断类型号由指令,INT n,中,n,决定。,在中断服务程序中也可使用中断指令。,正在执行软件中断时,如果有不可屏蔽中断请求,就会在当前指令执行完后立即予以响应。如果有可屏蔽中断请求,并且,IF,1,,也会在当前指令执行完后予以响应。,8086/8088,响应中断过程,我们能控制的行为,完整的中断处理过程需要硬件、软件共同实现。中断软件包括主程序和中断服务程序,两者之间还要相互配合,才能完整地实现中断功能。,主程序中的初始化包括:,设置中断向量表。,设置中断系统的中断接口电路,开放或屏蔽中断源的中断申请。,开中断。执行指令,STI,,置位,CPU,中断允许标志,IF,,允许,CPU,响应可屏蔽中断请求。,四、,中断软件结构,中断服务子程序的功能各有不同,但所有的中断服务子程序都有相同的结构形式。,保护现场。所谓中断现场通常是指转入中断服务程序时,,CPU,的各个寄存器的值。由于中断响应的随机性,中断服务程序中可能用到与主程序相同的寄存器,在中断服务结束时,为保证返回主程序后不影响主程序运行的连续性,必须把中断服务程序中改变的寄存器的内容恢复原值。在中断服务程序开始时,通过一系列,PUSH,指令将中断服务程序中用到的寄存器的值入栈保护起来。,开中断。由于在响应中断时,,CPU,自动清除,IF,及,TF,位,使,CPU,进入中断服务程序后,不允许再产生新的中断,如果在中断服务程序中还允许中断嵌套,则在中断服务程序中必须再次开放中断。,执行中断处理程序,实现中断处理功能。,恢复现场。为保证恢复现场和返回过程中不受其它中断的影响,常先关中断,然后再通过一系列,POP,指令恢复寄存器的值。,中断返回。在中断服务程序的最后一条指令总是中断返回指令,IRET,,把堆栈中保存的断点值和标志值分别装入,IP,、,CS,和,PSW,,返回到主程序继续执行。,主程序与中断服务程序之间数据交换:,通过寄存器交换:主程序(中断服务程序)把数据存放在寄存器中,中断服务程序(主程序)从该寄存器中读取数据。,通过数据段交换:主程序(中断服务程序)把数据存放在数据段存储区中,中断服务程序(主程序)从该存储区中读取数据。,例,7-9,编写中断处理程序,要求主程序运行过程中,每,10,秒响铃一次,同时屏幕上显示信息“,The bell is ring,!”,思路:,系统定时器产生,8,号中断,每秒中断,18.2,次。,每次定时中断都执行,INT 1CH,指令。,原本的,1CH,中断的服务程序中只有一条,IRET,指令,即什么都不做就返回。,若把,1CH,的中断向量指向我们编的中断服务程序,RING,,则,RING,每秒被执行,18.2,次。,在,RING,中实现响铃、显示信息功能。,;定义数据结构,DATASEGMENT,COUNTDW1,MESSDBThe bell is ring,!,DATAENDS,STACKSEGMENT,DB100 DUP(0),STACKENDS,;,-,;程序说明:主程序,;程序功能:,;,(1),保存原来的中断向量;,;,(2),设置新的中断向量;,;,(3),设置中断屏蔽字;,;,(4),开中断;,;,(5),延时足够时间以响铃、显示;,;,(6),恢复原中断向量,结束。,;,-,CODESEGMENT,MAINPROCFAR,ASSUME CS:CODE,,,DS:DATA,,,SS:STACK,START,:,MOVAX,,,STACKMOVSS,,,AX,PUSHDS,;返回,DOS,用,SUBAX,,,AX,PUSHAX,MOVAX,,,DATA,MOVDS,,,AX,MOVAL,,,1CH,;读原中断向量,MOVAH,,,35H,INT21H,PUSHES,;保存原中断向量,PUSHBX,PUSHDS,MOVDX,,,OFFSET RING,MOVAX,,,SEG RING,MOVDS,,,AX,MOVAL,,,1CH,;设新中断向量,MOVAH,,,25H,INT21H,POPDS,INAL,,,21H,;设中断屏蔽,ANDAL,,,0FEH,OUT21H,,,AL,STI,;开中断,MOVDI,,,2000,;主循环延时,DELAY,:,MOVSI,,,3000,DELAY1,:,DECSI,JNZDELAY1,DECDI,JNZDELAY,;主循环结束否,POPDX,;取原中断向量,POPDS,MOVAL,,,1CH,;复原中断向量,MOVAH,,,25H,INT21H,RET,;作为,DOS,的子程序,MAINENDP,;,-,;程序说明:中断服务程序,;程序功能:,;,(1),保存现场;,;,(2),开中断;,;,(3)10,秒计时;,;,(4),显示信息、响铃;,;,(5),恢复现场,;,(6),中断返回,;,-,RINGPROCNEAR,PUSHDS,;保护现场,PUSHAX,PUSHCX,PUSHDX,MOVAX,,,DATA,MOVDS,,,AX,STI,;开中断,DECCOUNT,;,10,秒计数,JNZEXIT,;,10,秒未到,MOVDX,,,OFFSET MESS,MOVAH,,,09H,INT21H,MOVDX,,,100,;响铃,,50,周期,INAL,,,61H,ANDAL,,,0FCH,SOUND,:,XORAL,,,02H,;,D1,取反,OUT61H,,,AL,MOVCX,,,140H,;延时,WAIT,:,LOOPWAIT,DECDX,JNESOUND,MOVCOUNT,,,182,;,10,秒计数,EXIT,:,CLI,;关中断,POPDX,;恢复现场,POPCX,POPAX,POPDS,IRET,;中断返回,RINGENDP,;过程结束,CODEENDS,;代码段结束,ENDSTART,;程序结束,开始,中断返回,保存现场,开中断,响铃、显示,置,10,秒初值,10,秒到?,关中断,恢复现场,N,开始,返回,DOS,保存原向量,设置新向量,设置屏蔽,开中断,延时到?,恢复原向量,N,问题:,中断服务程序执行多少次才响铃、显示一次?,如何实现,10,秒定时?,如何实现响铃?,主程序与中断服务程序间通过什么交换数据?,7-4,中断控制器,8259A,主要内容:,8529A,的内部结构,8259A,的工作方式,8259A,的初始化命令字和操作命令字,8259A,级联方式,8259A,使用举例,多片,8259A,组成的主从式中断系统,一、功能和引脚,主要功能,中断优先权管理:单片能管理,8,级优先级中断,通过级联,,9,片能管理,64,级中断。,中断屏蔽:每级中断可以单独屏蔽或允许。,中断类型号:自动提供中断类型号给,CPU,。,多种工作方式:通过编程可选择多种工作方式。,引脚,DIP-28,封装。,二、内部结构,1,、数据缓冲器,数据总线缓冲器是,8,位双向三态缓冲器,通过,D7D0,双向数据线与系统数据总线接口。,CPU,写入编程控制字、读出,8259A,的状态信息以及中断响应时,8259A,送出的中断类型号,都经过它传送。,8259A,只能连接,CPU,的低,8,位数据总线,D7D0,,因为,CPU,总是从低,8,位数据线,D7D0,读取中断类型号。,2,、读写控制电路,读写控制电路接收,CPU,送来的读命令,RD,、写命令,WR,,片选信号,CS,,片内端口选择信号,A0,。,片选信号,CS,由高位地址译码后给出,并且在,M/IO,指示访问外设时才有效。,8259A,的,A0,用来选择,8259A,的两个,I,O,端口,称,8259A,的,A0=1,的端口为,8259A,的奇端口,称,8259A,的,A0=0,的端口为,8259A,的偶端口。,8088,系统中数据线为,8,位,,8259A,数据线为,8,位,所以,CPU,的,A0,连,8259A,的,A0,,这时,8259A,的奇端口和偶端口分别对应,8088,的奇地址和偶地址。,在,8086,系统中,8259A,的,D7D0,也与,CPU,数据总线低,8,位相连,,CPU,的,A0,必定为,0,,,CPU,的,A1,连,8259A,的,A0,,这时,8259A,的奇端口和偶端口都对应,8086,的偶地址。,3,、,缓冲器控制,8259A,的,D7D0,与系统数据总线相连有非缓冲或缓冲两种方式,。,非缓冲方式,:,8259A,可直接与数据总线相连。,8259A,的,SP/EN,端作输入端,SP,使用,,SP,1,,表示此,8259A,为主片,,SP,0,,表示此,8259A,为从片。,缓冲方式:,8259A,通过总线驱动器和数据总线相连。,8259A,的,SP/EN,作为输出端,EN,使用,,EN,端与总线驱动器允许端,OE,相连,当,EN,0,,数据驱动器开启,允许,8259A,与,CPU,之间交换数据,当,EN,1,时,数据驱动器关闭,数据驱动器与,CPU,之间为高阻态。,3,、,级联比较器,在级联方式下,有一个,8259A,作为主片和若干个从,8259A,。,双向级联信号线,CAS2CAS0,用于主片和从片之间的联系。,8259A,作主片时,,CAS2CAS0,为输出线,作从片时,,CAS2CAS0,为输入线。,主片从,CAS2CAS0,输出当前响应的从片的,ID,码,从片从,CAS2CAS0,上读取,ID,吗与自己的,ID,比较,以判断是否响应本片的中断请求。,4,、,中断请求寄存器,IRR,IR7IR0,是外设的中断请求信号输入端,可以是电平触发或边沿触发。,IRR,是一个,8,位寄存器,存放外部输入的中断请求信号,IR7IR0,的请求状态。当某个,IRx,端有中断请求时,,IRR,相应的,Dx,位置“,1”,,否则,,Dx,=0,,其中,x=07,。,可以允许,8,个中断请求信号同时进入,此时,IRR,寄存器被置成全“,1”,。当中断请求被响应时,,IRR,的相应位自动复位。,INT,是,8259A,的中断申请输出端,用来向,CPU,发出的中断请求信号,与,CPU,的,INTR,端相连。,级联方式下,主片的,IR7IR0,连接从片的,INT,端,从片的中断申请要经由主片才能到达,CPU,。,5,、,中断屏蔽寄存器,IMR,IMR,是一个,8,位寄存器,用来存放对各级中断请求的屏蔽信息。,当用软件编程使,IMR,寄存器中,Dx,位置“,0”,时,允许,IRR,寄存器中相应的,IRRx,位的中断请求进入中断优先级判别器。,若,IMR,中,Dx,位为“,1”,,则,IRRx,位中断请求被屏蔽,不进入中断优先级判断逻辑。,各个中断屏蔽位是独立的,屏蔽了某级中断,不影响其它优先级的中断允许。,6,、,中断服务寄存器,ISR,ISR,保存每个中断请求输入端对应的中断服务的状态,,ISR,中标志位的置位表示该中断在服务过程中。,某个,IRx,端的中断请求被,CPU,响应后,当接收到第一个,INTA,信号时,,ISR,寄存器中的相应,Dx,位自动置“,1”,。多重中断时,,ISR,多位同时被置成“,1”,。,中断服务结束时必须把对应标志位清零,称为中断结束操作。,7,、,优先级判别器,PR,优先级判别器根据设定的优先级管理规则,依据中断普遍寄存器,IMR,、中断请求寄存器,IRR,以及中断服务寄存器,ISR,的内容,实现优先级处理。,在多个中断同时提出请求时,首先响应其中优先级最高的请求;当出现多重中断时,,PR,判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。,8,、,控制电路,内部控制电路根据,IRR,的置位情况和,IMR,设置的情况,通过,PR,判定优先级,发出控制信号,向,CPU,发出中断请求信号,INT,。,接收,CPU,的中断响应信号,INTA,,在第一个,INTA,负脉冲,使中断服务寄存器,ISR,相应位置“,1”,,并把中断请求寄存器,IRR,相应位清“,0”,。,当,CPU,第二个,INTA,信号到来,控制,8259A,送出当前优先级最高的中断类型号到,D7D0,上。,在中断结束操作时,,8259A,将中断服务寄存器,ISR,的相应位清“,0”,。,三、,8259A,的中断管理方式,1,、,8259A,的编程结构,从编程的角度来看,,8259A,包括初始化命令字寄存器,ICW1ICW4,,操作命令字寄存器,OCW1OCW3,,以及中断屏蔽寄存器,IMR,、中断请求就存器,IRR,、中断服务寄存器,ISR,。,优先级裁决电路是根据初始化命令、操作命令字在设定的优先级管理方式下工作。,初始化命令字由初始化程序设定,其内容一经设置,在非初始化的工作过程中就不会改变。,操作命令字是在非初始化的工作过程中写入的,其值可以重新设置。,A,0,D,4,D,3,读写操作,指令,0,1,0,0,1,X,CPUICW,1,OUT,0,1,0,1,X,X,CPUICW,2,、,ICW,3,、,ICW,4,、,OCW,1,、,0,1,0,0,0,0,CPUOCW,2,0,1,0,0,0,1,CPUOCW,3,0,0,1,0,X,X,IRR/ISRCPU,IN,0,0,1,1,X,X,IMRCPU,1,X,X,X,X,X,高阻,无,X,1,1,X,X,X,8259A,寄存器操作,(,D4,、,D3,是寄存器的标志位),2,、,优先级设置方式,全嵌套方式,特殊全嵌套方式,优先级自动循环方式,优先级特殊循环方式,(1),全嵌套方式,IR7IR0,中断优先级分配级别,70,级,,IR7,优先级最低,,IR0,优先级最高;,当某中断请求被响应后,,8259A,把中断服务寄存器,ISR,中的对应位置“,1”,;,如果新中断的优先级高于当前正在处理的中断,则实现中断嵌套,此时,ISR,寄存器中会有多个标志位为“,1”,;,(高级中断嵌套),如果新中断的优先级低于当前正在处理的中断,则不会实现中断嵌套;,(低级中断嵌套),如果新中断的优先级,等于,当前正在处理的中断,,不会,实现中断嵌套;,(同级中断不嵌套),(2),特殊全嵌套方式,IR7IR0,中断优先级分配级别,70,级,,IR7,优先级最低,,IR0,优先级最高;,当某中断请求被响应后,,8259A,把中断服务寄存器,ISR,中的对应位置“,1”,;,如果新中断的优先级高于当前正在处理的中断,则实现中断嵌套,此时,ISR,寄存器中会有多个标志位为“,1”,;,(高级中断嵌套),如果新中断的优先级低于当前正在处理的中断,则不会实现中断嵌套;,(低级中断嵌套),如果新中断的优先级,等于,当前正在处理的中断,,也会,实现中断嵌套;,(同级中断嵌套),优先级循环方式,最低优先级与最高优先级都不是固定不变的,在一个中断响应结束后,可改变优先级顺序。,任何时候,优先级从高到低顺序构成一个闭环的循环,如果第,x(07),为最低优先级,则第,(x+1),、第,(x+2),、,依次为最高优先级、次高优先级、,,依次类推。,只要确定最低优先级,就可知道整个优先级顺序。,优先级顺序的改变在,中断结束操作的同时,进行。,优先级自动循环方式,总是把当前结束的中断源变为最低优先级,任何一级中断被处理完后,它的优先级别变为最低,新的最高优先级赋给原来比它低一级的中断请求,其它依次类推。,原始状态,ISR,内容,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,1,0,0,1,0,0,优先级,7,6,5,4,3,2,1,0,IR,2,中断结束,ISR,内容,0,0,0,0,1,0,0,0,优先级,4,3,2,1,0,7,6,5,IR,5,中断结束,ISR,内容,0,0,0,0,0,0,0,0,优先级,1,0,7,6,5,4,3,2,优先级特殊循环方式,循环后的最低优先级由优先级特殊循环指令任意确定。,原始状态,ISR,内容,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,1,0,0,0,1,0,0,优先级,7,6,5,4,3,2,1,0,优先权特殊循环后,ISR,内容,0,1,0,0,0,1,0,0,优先级,3,2,1,0,7,6,5,4,3,、中断结束方式(,EOI,),中断结束操作就是对中断服务寄存器,ISR,中对应标志位的清“,0”,处理。,当一个中断得到响应时,第一个,INTA,信号时,,8259A,使,ISR,寄存器中对应位置“,1”,,表明此位对应的中断请求输入引脚的中断正在服务过程中,为中断优先判别器提供判别依据。,中断结束时,必须使,ISR,寄存器中对应位置“,0”,,否则中断优先权判别会不正常。,不同的中断结束方式,使,ISR,中不同的位清“,0”,;,优先级循环的改变与中断结束同时进行;,(,1,)自动,EOI,方式,(,AEOI,),任何一级中断被响应后,在第一个,INTA,负脉冲,,ISR,寄存器对应位置“,1”,,在第二个,INTA,脉冲后,,8259A,自动将,ISR,寄存器中对应位清“,0”,。,尽管对某个外设正在进行中断服务但对,8259A,来说,,ISR,寄存器中没有指示,好象已结束了中断处理一样。,这种方式虽然简单,但因为,ISR,寄存器中没有标志,低级中断申请时,可以打断高级中断,产生重复嵌套,嵌套深度也无法控制,容易产生错误,使用时要特别小心。通常在只有一片,8259A,,不会出现多个中断嵌套情况下使用。,(,2,)普通,EOI,方式,每次收到,CPU,传送给自己的普通,EOI,结束命令,,8259A,就将,ISR,寄存器的所有为“,1”,的标志位中级别最高的标志清“,0”,。,CPU,通常在中断服务程序中,在执行中断返回指令之前,发送普通,EOI,结束命令字到,8259A,,没有,EOI,结束命令,,ISR,寄存器中对应标志位仍为“,1”,,继续屏蔽低级的中断请求。,若,EOI,结束命令字放在中断服务程序中其它位置,过早清除了中断服务标志,可能会引起同级或低级中断在本级中断未处理完毕之前进入,容易产生错误。,普通,EOI,结束方式常用于完全嵌套工作方式下,因为此时优先级顺序固定明确。,(,3,)特殊,EOI,方式,在特殊,EOI,结束方式下,,CPU,向,8259A,发送特殊,EOI,结束命令字,命令字中同时指定要清除的中断级别,,8259,将,ISR,寄存器中指定级别的对应标志位清“,0”,,不一定是优先级最高的中断服务标志位。,特殊,EOI,结束方式可使用在任何情况下,特别是在非全嵌套工作方式下,无法确定中断服务寄存器中哪一级中断为最后响应和处理的。,在级联方式下,一般用非自动结束方式,无论用普通,EOI,结束方式,还是用特殊,EOI,结束方式,中断处理结束时,要发两次中断结束命令,一次是发给主片的,另一次是发给从片的。,EOI,命令的使用,4,、中断屏蔽方式,通过对,IMR,的操作,,8259A,可以对某些中断请求单独屏蔽。,对,IMR,的设置可以在主程序中,也可放在中断服务程序中。,(1),普通屏蔽方式,将中断屏蔽寄存器,IMR,中某个位置“,1”,,即可将该位对应的中断请求屏蔽掉。,例如:把,IMR,设为,01101100B,,则,IR6,、,IR5,、,IR3,、,IR2,引脚上的中断请求被屏蔽。,(2),特殊屏蔽方式,在某些场合,希望在中断服务程序中仅仅屏蔽同级中断,但对高级以及低级的中断都可以响应,可通过特殊屏蔽方式来实现。,特殊屏蔽方式总是在中断处理程序中使用。,先把,8259A,设置为特殊屏蔽方式,再对中断屏蔽寄存器,IMR,中当前中断服务程序对应的标志位置“,1”,,就会同时使中断服务寄存器中当前中断对应的标志位自动清“,0”,。,既屏蔽了当前正在处理的中断,又开放了较低级别的中断请求。,待中断服务程序结束时,应将,IMR,寄存器中刚刚置位的标志复位,并退出特殊屏蔽方式。,5,、中断请求引入方式,8259A,从中断请求输入端,IR7IR0,引入中断请求信号有边沿触发和电平触发两种方式。,在边沿触发方式下,,8259A,将中断请求输入端出现的上升沿作为中断请求信号。中断请求输入端出现上升沿触发信号后,可以一直保持高电平。,在电平触发方式下,,8259A,将中断请求输入端出现的高电平作为中断请求信号。但当中断得到响应后,中断输入端的高电平必须及时撤消,否则在,CPU,进入中断处理过程,并且开中断的情况下,原输入端的高电平会引起第二次中断的错误。,6,、中断查询方式,在有些系统中,,CPU,不开放中断,,IF=0,,而是采用中断查询方式。,CPU,不是通过,INTA,信号响应中断,而是向,8259A,发送查询命令字,,8259A,不是把优先级最高的中断的类型码送往数据总线,而是根据优先级判断结果组成查询字供,CPU,读取,查询字中指示当前优先级最高的中断请求。,CPU,根据查询字的内容确定当前优先级最高的中断源,再进行中断服务处理。既有中断的特点,又有查询的特点。,中断查询方式一般用在多于,64,级中断的场合,或者用在,个中断服务程序中几个模块分别为几个中断设备服务的情况下。,7,、,8259A,级联工作,G,N,D,G,N,D,V,c,c,I,N,T,R,主,8259A,I,R,0,I,R,1,I,R,2,I,R
展开阅读全文