




已阅读5页,还剩141页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第七章中断系统,.,2,掌握:,中断的基本概念中断响应的一般过程中断向量表及其初始化8088/8086中断系统可编程中断控制器8259A中断调用,.,3,一、中断的基本概念,中断:CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。,.,4,中断源,引起CPU中断的事件,发出中断请求的来源。,内部中断,外部中断,异常中断,软件中断,可屏蔽中断,非屏蔽中断,异常事件引起,中断指令引起,INTR中断,NMI中断,.,5,引入中断的原因,提高数据传输率;避免了CPU不断检测外设状态的过程,提高了CPU的利用率。实现对特殊事件的实时响应。,.,6,中断系统,正确识别中断请求,实现中断响应、中断处理及中断返回;实现中断优先级排队;实现中断嵌套,中断系统是指实现中断功能的软硬件的统称。功能有:,.,7,中断系统的功能,实现中断及返回中断源发出中断请求,CPU决定是否响应:若响应,则保护断点和现场,转入相应中断服务程序,中断服务结束后,恢复现场和断点,继续执行原程序。,.,8,非预料事件是指事件发生的时间无法预知,即中断源何时产生中断不确定,是随机的。,中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。,中断系统的功能(续),.,9,实现优先权排队按各中断请求的重要程度排列CPU响应的次序称为中断优先级。即同时有多个中断请求到来时,CPU会首先响应和处理优先级别最高的中断请求。中断优先级的实现可以用软件或硬件的办法。,中断系统的功能(续),.,10,实现中断嵌套:当CPU在处理某一级中断时,若有高一级的中断请求,中断系统应能安排CUP暂时停止现行的中断处理,响应高一级的中断,中断系统的功能(续),.,11,二、外部中断响应的一般过程,中断请求中断源识别及中断判优中断响应中断处理(服务)中断返回,.,12,中断请求,中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。,NMI(非屏蔽中断)INTR(可屏蔽中断),.,13,中断源识别,软件查询法中断矢量法由中断源提供中断类型号,CPU根据类型确定中断源。,中断源识别及判优由硬件系统完成,.,14,中断判优,当有多个中断源同时提出请求时,需要确定首先响应哪一个中断源。优先级法则低优先级的中断程序允许被高优先级的中断源所中断排队法则先来先响应,中断嵌套,.,15,中断判优,软件判优顺序查询中断请求,先查询的先服务即先查询的优先级别高硬件判优链式判优、并行判优(中断向量法),.,16,中断响应,向中断源发出INTA中断响应信号;关中断保护硬件现场将FLAGS压入堆栈保护断点将CS、IP压入堆栈获得中断服务程序入口地址,由硬件系统完成,.,17,中断处理,保护现场执行中断服务程序恢复现场中断服务程序的特点:为“远过程”用IRET指令返回,.,18,中断服务子程序完成的工作,关中断,保护现场,保护断点,找入口地址保护软件现场(参数)开中断(STI)中断处理关中断(CLI)恢复现场中断返回,.,19,中断返回,执行IRET指令,使IP、CS和FLAGS从堆栈弹出如要实现中断嵌套,则在保护现场后,要执行开中断指令,恢复断点和硬件现场,.,20,中断处理过程流程,.,21,当前CPU正在进行某一优先权级别的中断源的处理;有更高级别的中断源发出请求,且新中断源满足响应条件;CPU中止当前的中断服务程序,保护断点和现场,转而响应高级中断这种多级中断的处理方式即为“嵌套”。某些中断系统对中断嵌套的层数有一定限制。,中断嵌套,.,22,高级中断源能中断低级的中断处理当CPU正在处理某个中断时,如果外部又有一个优先级别比本优先级别更高的中断请求,则可以实现中断嵌套。,中断嵌套,.,23,中断嵌套示意图,.,24,中断服务程序(用户自行编制):保护现场:保存CPU内部各寄存器的内容,以便在服务程序中使用;开总中断:将IF置1,使CPU在中断服务期间仍能响应更高级的INTR请求;具体处理:用户的中断服务关总中断:将IF位清0;恢复现场:将入栈保护的各寄存器内容依次弹出;中断返回:执行IRET指令,CPU将自动弹出给IP、CS、FLAGS,就可以接着执行被中断的原程序;开总中断:再次将IF位置1,使返回后能够重新响应,.,25,7.28086中断系统,内部中断外部中断,异常中断软件中断,非屏蔽中断可屏蔽中断,256个中断源,除法错中断溢出中断单步中断,.,26,根据8086内部的中断逻辑电路,各种中断源的优先权顺序为:被0除中断软件中断INTONMIINTR单步中断。,CPU内的中断逻辑,8086中断系统,.,27,中断类型码、中断向量表和中断向量,中断类型码:8086可以处理256个中断请求,每个中断请求均对应于惟一固定的类型码。被0除类型码是0,单步为1;NMI为2;断点中断为3,溢出中断为4等。中断向量:即中断服务程序的入口地址,包括段地址(高字单元)和偏移地址(低字单元)。中断向量表:存放中断向量的表,位于内存空间的最低地址单元,长1KB。共可容纳256个中断向量(25641024)。,.,28,中断类型码,一、中断类型码:8086可以处理256个中断请求。每个中断请求均对应于唯一固定的类型码。被0除类型码是0,单步为1;NMI为2;断点中断为3,溢出中断为4;等。,.,29,IBMPC/XT中断源的功能,INTR,BIOS可调用,DOS可调用,.,30,1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号为2,所以中断向量放在0000:0008开始的4个单元中。NMI中断一般用于紧急情况的处理,不受中断标志位IF影响。2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CPU才能响应INTR中断。CPU响应INTR中断时,往INTA引脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。,1、外部中断硬件中断,.,31,非屏蔽中断NMI,IBMPC/XT的NMI来源于三方面:存储器奇偶校验错误PCKI/O通道奇偶校验错误IOCHCK协处理器产生异常N.P.NPI三种信号通过NMI屏蔽触发器,向CPU的NMI引脚送出;系统上电之初,RESET信号先将NMI屏蔽触发器清0。等系统自检完成之后,再写入控制字解除对NMI的屏蔽。,.,32,外部中断源的管理,多个外部硬件中断源共用一条INTR线时,要在程序中采取一定措施或用外部硬件解决中断源的优先权排列和多级中断的嵌套等。中断优先权(优先级):中断优先权就是为每个中断源所确定的响应级别。软件排序:CPU响应中断后,在程序中用查询的方法判定外设的中断请求。,.,33,外部中断源的管理,软件查询排序的特点是:查询次序即优先权排序,最先被询问的故障具有最高优先级;节省硬件;修改方便,只要改变程序中的查询次序即可;由询问转至真正的服务程序入口时间长,在中断源较多的情况下执行速度较慢。硬件排序:采用优先权的编码电路,对各种外部硬中断进行排队。还有菊花链式硬件排序电路,以及中断控制集成芯片8259A,.,34,2、内部中断软件中断,内部中断指由指令的执行或软件对标志寄存器中某个标志的设置产生的中断,专用中断指令中断,.,35,内部中断的种类,(1)除法出错中断类型号为00H,除法出错中断既不是外部硬件产生,也不是用软件指令产生,而是CPU自身产生的,因此0型中断没有对应的中断指令,即指令系统中没有INT0这条指令。,.,36,对单步中断要注意三点:一、所有类型的中断在其处理过程中,CPU会自动地把标志寄存器FLAGS压入堆栈,然后清除TF和IF。因此当CPU进入单步中断处理程序时,就不再处于单步工作方式,而以正常方式工作。只有在单步处理结束时,从堆栈中弹出原来的标志,才能使CPU又回到单步方式。(IF=1,TF=1)二、通常程序编制好后,在DEBUG调试程序时可使用单步中断检查程序,是通过跟踪命令TF来实现单步运行。,(2)单步中断(陷阱中断)类型号为01H,.,37,三、8086/8088指令系统中没有设置或清除TF标志的指令,但指令系统中的PUSHF和POPF为程序员提供了置位或复位TF的手段。置位和复位TF的程序段如下所示:,(2)单步中断(陷阱中断)类型号为01H,内部中断的种类,.,38,置位TF标志(D8=1)PUSHFPOPAXORAX,0100HPUSHAXPOPF,;复位TF标志PUSHFPOPAXANDAX,0FEFFHPUSHAXPOPF,(2)单步中断(陷阱中断)类型号为01H,内部中断的种类,.,39,(3)断点中断类型号为03H,设置断点实际上是把一条断点指令INT3插入程序中,CPU每执行到断点处的INT3指令便产生一个中断。,(4)溢出中断类型号为04H,在执行溢出中断指令INTO时,若标志寄存器FLAGS中的溢出标志OF=1,则产生一个类型号为4的内部中断,称为溢出中断。,内部中断的种类,.,40,对带符号数来说,溢出就意味着出错(加、减运算),一旦产生应立即发现,而CPU并不知道当前处理的数据是无符号数还是带符号数,只有程序员才明确这一点。因此通常在带符号数的加、减法运算后面总是跟着INTO指令,(4)溢出中断类型号为04H,.,41,如下面的指令用来测试加法的溢出:ADDAX,VALUINTO,当标志寄存器的OF=0时,则INTO指令不产生中断,CPU继续运行原程序;当OF=1时,进入溢出中断处理程序,打印出一个出错信息,在处理程序结束时,不返回原程序继续运行,而是把控制交给操作系统。,(4)溢出中断类型号为04H,.,42,(5)指令中断,在8086/8088的指令系统中,当CPU执行中断指令INTn时,也能形成内部中断,其中n在理论上可取值0255。当n0、1、3、4时,就是上述的四种内部中断。,内部中断的种类,.,43,内部中断的特点,(1)除单步中断以外,所有内部中断都不能被屏蔽。(2)所有内部中断不从外部接口中读取中断类型号也不发送中断响应信号,即不执行中断响应的总线周期。(3)指令中断没有随机性,外中断是随机性的。指令中断是由程序中指令引起的,指令位置事先已知。外中断是随机性的,由I/O设备引起,何时引起事先未知。,.,44,(4)除单步中断外,所有内部中断的优先权都比外部中断的优先权高。,内部中断的特点,8086中断的优先级别:,内部中断(单步中断除外),非屏蔽中断,可屏蔽中断,单步中断,.,45,IBMPC/XT中断源的功能,INTR,BIOS可调用,DOS可调用,.,46,中断向量和中断向量表,一、中断向量:中断服务程序的入口地址,包括段地址(CS,存放于高4字节单元)和偏移地址(IP,存放于低4字节单元)。二、中断向量表:存放中断向量的表格。位于内存空间的最低地址,长度1KB,可容纳256类中断向量(25641024)。中断号与中断服务程序入口地址的连接表,.,47,中断向量和中断向量表,.,48,中断向量表的初始化,将用户自定义的中断服务程序入口地址放入向量表注意点:向量表所在的段地址=0存放子程序入口的单元的偏移地址=n4,.,49,中断向量的设置方法,用三种方法来为中断类型N设置中断向量,1)直接装入法MOVAX,00HMOVDS,AXMOVBX,N*4;中断号BXMOVAX,OFFSETNEWINT;中断服务程序偏移地址MOVWORDPTRBX,AX;装入偏移地址MOVAX,SEGNEWINT;段基址MOVWORDPTRBX+2,AX;装入段基址,NEWINTPROC,IRETNEWINTENDP,、,、,.,50,中断向量的设置方法,2)使用串送存指令装入法CLI;关中断MOVAX,0MOVES,AX;ES=0MOVDI,N*4;中断向量指针MOVAX,OFFSETNEWINT;偏移地址CLD;DF=0,增地址STOSW;存串指令AXDIDI+1,再DI+2MOVAX,SEGNEWINT;段基址STOSW;存串指令AXDI+2DI+3STI;开中断,.,51,中断向量的设置方法,3)使用DOS功能调用设置中断向量设置中断向量是把由AL指定的中断类型N的中断向量DS:DX放置在中断向量表中。预置:(AH)=25H功能号(AL)=N中断类型号DS:DX=中断向量执行:INT21H,例如:MOVAX,SEGNEWINTMOVDS,AXMOVDX,OFFSETNEWINTMOVAL,NMOVAH,25HINT21H,.,52,中断向量的设置方法,例:利用INT21H设置中断向量MOVAH,25H;DOS功能调用号25HAHMOVAL,40H;将设置的中断类型码ALMOVDS,SEGUSERINTMOVDX,OFFSETUSERINT;入口参数:中断服务程序的入口地址DS:DXINT21H执行之后,中断服务程序的入口地址值将放入中断向量表中n4处连续的4个单元中。,.,53,7.2.4中断响应与处理,一、内部中断响应过程1.当内部中断发生时,或由INTn指令获得中断类型码,或是按预定方式得到中断类型码(专用中断:0、1、3、4);2.将类型码4,作为中断向量表的指针;3.FR(PSW)入栈保护;,.,54,4.清除IF和TF标志(0IF、0TF,屏蔽新的INTR中断和单步中断;5.把断点处的IP和CS值压入堆栈:先压入CS值,再压入IP值;6.取中断向量(中断服务程序的入口地址),分别送至CS和IP。按新的地址执行中断服务子程序。,内部中断响应过程,.,55,内部中断的特点:1进入中断时,不需要执行中断响应周期去获得中断类型码。2除单步中断外,内部中断无法用软件禁止,不受IF的影响。3内部中断没有随机性,由指令在程序中的位置决定。4除单步中断外,内部中断优先级高于硬件中断。,内部中断响应过程,.,56,外部中断响应过程,1.非屏蔽中断NMI的响应中断类型码为2。当NMI发生时,CPU在执行完当前指令后,转去中断类型码为2的中断服务子程序。响应过程(除中断类型码获得方式外)同INTn。CPU提供,不是外设提供。,.,57,可屏蔽中断INTR:CPU将执行持续两个总线周期的中断响应周期。第一个总线周期INTA*有效,向外设送出的中断应答信号;第二个总线周期INTA*再次有效,表示外设应送出中断类型码。CPU将在T4周期前沿读取中断类型码。,外部中断响应过程,.,58,在INTR线上的请求信号(高电平)必须保持到当前指令的结束。当INTR线有效且IF=1,则CPU在当前指令执行完毕后,响应外部中断请求,转入中断响应周期。中断响应周期有2个,每个响应周期由4个T组成,中间以空闲状态(3个)隔开。,2.可屏蔽中断INTR的响应,.,59,在每个中断响应周期,CPU都往引脚INTA*发一个负脉冲信号请求中断的外设在收到第2个INTA*时,将中断类型码DB(通常由8259传送)。获得中断类型码后,则转入中断处理过程(同内部中断)。INTR共执行7个总线周期。,.,60,中断响应周期时序,CPU从引脚INTA发中断响应信号,接口芯片接收此信号,把中断类型号准备好;同时ISRi=1,IRRi=0。CPU再从引脚INTA发中断响应信号,接口芯片接此信号后,将中断类型号送至数据总线上;CPU从数据总线获取中断类型号。,.,61,.,62,中断类型码的获取NMI、断点中断、溢出中断、被0除、单步中断等类型码固定。INTN软中断类型码由立即数N给出。外部中断读取中断类型码。,中断响应过程,.,63,已知中断类型码后,如何进入中断服务程序?1、将中断类型码乘以4,得到中断向量表的向量首址指针;2、将断点(当前CS、IP的值)入栈保护;3、取中断向量:把向量表指针所指的4个连续字节的内容作为中断服务程序的入口地址,分别送给IP和CS;4、按新的CS:IP指针执行中断服务程序。,中断响应过程,.,64,(FLAG),0150,1000,中断响应过程,.,65,四、中断过程举例设某输入设备数据准备就绪后向CPU申请可屏蔽中断,中断类型码为80H,中断响应后执行的服务子程序名为INTPROC。程序开始,首先应对中断向量表进行安排,即先进行中断初始化。程序如下:,CLIPUSHDSMOVAX,0000H;中断向量指针的段基址MOVDS,AXMOVBX,0200H;中断向量指针的偏移量MOVAX,OFFSETINTPROCMOVBX,AX;偏移量中断向量表MOVAX,SEGINTPROCMOVBX+2,AX;段基址中断向量表POPDSSTI,.,66,CLIPUSHDSMOVAX,0000H;中断向量指针的段基址MOVDS,AXMOVBX,0200H;中断向量指针的偏移量MOVAX,OFFSETINTPROCMOVBX,AX;偏移量中断向量表MOVAX,SEGINTPROCMOVBX+2,AX;段基址中断向量表POPDSSTIMOVAX,2000HADDAX,AXMOVSI,AX,.,67,(1)INTR有效,外设申请中断,.,68,START:MOVAX,DATAMOVDS,AXCLI;关中断,设置中断向量SUBAX,AXMOVES,AX;中断向量表的段基址为0000HMOVDI,460H;在中断向量表中的偏移量MOVAX,OFFSETINTSVCLDSTOSW;写中断向量的偏移量MOVAX,SEGINTSVSTOSW;写中断向量的段基址STIINT60H;软中断指令MOVAH,4CH;返回DOSINT21H,定义一个软中断,中断类型号为60H,在中断服务程序中完成ASCII码加偶校验位(第7位)的工作,ASCII码首地址为ASCBUF,字节数为COUNT,加偶校验位后仍放回原处。,.,69,INTSVPROC;中断服务程序PUSHAX;保护现场PUSHBXPUSHCXMOVCX,COUNTMOVBX,OFFSETASCBUFL2:MOVAL,BXANDAL,AL;建立标志PF,PF=1,有偶数个1JPL1ORAL,80HMOVBX,AL;加入偶校验后写回L1:INCBXLOOPL2POPCX;恢复现场POPBXPOPAXIRET,.,70,利用DOS功能调用设置中断向量表设置中断向量:把由AL指定中断类型码的中断向量DS:DX置在中断向量表中。预置AH=25H,AL=中断类型码DS:DX=中断向量执行INT21H,读取中断向量:把由AL指定中断类型码的中断向量从中断向量表中取到ES:BX中。预置AH=35H,AL=中断类型码执行INT21H返回时送:ES:BX=中断向量,.,71,7.3可编程中断控制器8259A,专用于系统内可屏蔽硬件中断的控制,管理系统的外部中断请求。主要功能特点:1、每片8级优先级管理,级联后可达64级2、自动产生中断向量3、每路中断可分别屏蔽4、功能灵活,优先权等多种工作方式可编程,.,72,7.3.18259A的结构和功能,.,73,8259A的内部结构,IRR中断请求寄存器(8位)保存8个(IR0IR7)外部中断请求信号Di1,表示IRi引脚有中断请求Di0,表示IRi引脚无中断请求,.,74,IR中断屏蔽寄存器(8位)保存对中断请求信号IRi的屏蔽状态;Di1,则IRi引入的中断被屏蔽(关闭);Di0,则IRi引入的中断被开放。,8259A的内部结构(续),.,75,当IR7IR0端有多个中断请求同时发生时,由PR判定其最高优先权;在INTA脉冲期间将它置入中断服务寄存器ISR的相应位。,PR优先权判别器(8位),8259A的内部结构(续),.,76,ISR中断服务寄存器(8位)保存正在被8259A服务着的中断状态;Di1,表示IRi中断正在服务中;Di0,表示没有被服务。,8259A的内部结构(续),.,77,8位双向三态缓冲器,构成8259A与系统数据线的接口。对8259A编程写入的命令字和读出8259A状态信息都是通过它传送。,数据总线缓冲器,8259A的内部结构(续),.,78,读写控制逻辑,接收读/写控制信号RD/WR、片选信号CS和端口选择信号A0。一片8259A在系统中占用2个口地址,用地址线A0来选择端口;用高位地址线通过译码产生8259A的片选信号。,8259A的内部结构(续),.,79,包括命令字(ICW1ICW4)寄存器,操作字(OCW1OCW3)寄存器和相关的控制逻辑;通过INT端向CPU发中断请求信号,从INTA端接收CPU的中断响应信号,控制8259A进入中断状态。,控制电路,级连缓冲/比较器,一片8259A只能接收8级中断,当超过8级时,可用多片8259A级连使用,构成主从结构。可扩充到64级。,8259A的内部结构(续),.,80,中断级连方式的连接,一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A级连时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP/EN在非缓冲方式下,规定该8259A是主片(SP1)还是从片(SP0),动画,图示,.,81,8259级连电路,.,82,8259A的引脚功能,D7D0:双向数据总线。传送控制、状态信息和中断类型号。WR*:写信号。输入,低电平有效。当有效时,8259A接收CPU送来的命令字。RD*:读信号。输入,低电平有效。当有效时,8259A将状态信息放入数据总线供CPU检测。,.,83,A0:内部地址信号,输入。8259A只占两个地址,A0与CS*一同构成8259A的端口奇/偶地址选择。CS*:片选信号。输入,低电平有效。有效时,CPU可对该8259A进行读写。,8259A的引脚功能(续),.,84,与处理器接口引脚的逻辑功能,.,85,IR7IR0:外部中断请求信号,输入。INT:中断请求信号,输出。当IR7IR0任一引脚有中断请求时,8259A从INT向CPU发出中断请求信号。INTA:中断响应信号,输入。当CPU接收到中断请求信号,在允许中断条件下,CPU响应中断,并发出中断响应信号到INTA端。,8259A的引脚功能(续),.,86,CAS2CAS0:级连信号,双向引脚。用于控制多片8259A的级连使用。主片:CAS2CAS0引脚输出从片:CAS2CAS0引脚输入SP/EN:双功能引脚。当缓冲方式时,该引脚输出,它用于总线收发器的使能信号;当非缓冲方式时,该引脚输入,SP=1表示该片是主片,SP=0表示该片是从片。,8259A的引脚功能(续),.,87,8259A的工作过程,动画,.,88,2.当外设发出中断请求后,其对外部中断请求的处理过程如下:若有IRi=1,则IRR中相应位置1。若对应IMR中的相应位为0,且经优先权判别器PR后,则8259A向CPUINTR。若IF=1,则CPU在执行完当前指令后,发INTA8259AISR中对应当前最高优先权的位为1,且IRR中相应位清0。,8259A的工作过程,1.上电后,由CPU执行一段程序对8259初始化(通过输入初始化命令字实现)。完成初始化后,8259A处于就绪状态。,.,89,CPU进入响应中断的过程,继而执行中断子程序。,CPU发第二个INTA8259A,8259ADB上送8位的向量号N(即中断类型号,初始化8259A时已设定好)。CPU做:N4从中断向量表中取出中断服务程序的入口地址。若8259A为AEOI(自动结束中断),则在第二个INTA尾,ISR中相应的位复位。否则,至中断服务程序结束,发出EOI命令使ISR中相应位复位.,.,90,.,91,中断触发方式电平触发方式当IR7IR0出现高电平时,表示有中断请求。这个高电平应持续到8259A收到第一个中断响应脉冲之前。边沿触发方式当IR7IR0出现由低电平到高电平的跃变,表示有中断请求。,8259A中断管理(工作)方式,.,92,中断屏蔽方式,普通屏蔽方式将IMR中某一位或几位置“1”,即可将相应位的中断请求屏蔽。例如,将11110000写入IMR,即可屏蔽IR7IR4的中断,开放IR3IR0的中断。特殊屏蔽方式通常情况下,当一个中断被响应时,禁止同级或较低级别的中断请求。在特殊屏蔽方式下,当一个中断被响应时,仅屏蔽同级别的再次中断,较低或较高级别的中断请求可被允许进入。,8259A中断管理(工作)方式(续),.,93,中断优先级别管理方式,完全嵌套方式(固定优先级方式)IR7IR0的优先级固定,IR0为最高级,IR1次之,IR7为最低级。CPU响应某一级中断时,8259A将ISR中与该中断源对应的那一位置“1”,并自动禁止同级和较低级的中断请求,但高优先级中断可中断当前的服务,实现中断嵌套。,8259A中断管理(工作)方式(续),.,94,特殊全嵌套方式,当CPU正处理某级中断请求时,只禁止较低级别的中断请求,而允许同级或较高级的中断请求进入。特殊全嵌套方式用于多片级连系统。当主片处于该方式,可响应来自同一从片的其它中断请求。,8259A中断管理(工作)方式(续),.,95,自动循环方式,IR7IR0中断源轮流为最高优先级,当任一级中断服务结束后,该中断源自动降为最低级,而它的下一级的中断源自动升为最高级。,例如:现正为IR3引入的中断服务,若中断服务程序完毕,IR3被赋予最低优先级,IR4被赋予最高优先级,各级中断源的优先级从高到低依次为:IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。,8259A中断管理(工作)方式(续),.,96,特殊循环方式,用户可置优先权命令指定最低优先级。,例如:设置IRi为最低优先级,则最高优先级赋予IRi1,其它各级按循环方式类推。,8259A中断管理(工作)方式(续),.,97,中断结束方式,把ISR寄存器的中断服务标志ISRi位清0,意味着结束IRi引入的中断服务。如何将ISRi位清0,8259A提供了6种中断结束方式。自动EOI(AutomaticEndofInterrupt)方式8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0,不需要在中断服务程序中向8259A送中断结束(EOI)命令字。,8259A中断管理(工作)方式(续),.,98,普通EOI(EndofInterrupt)方式,执行IRET之前,向8259A送一个EOI命令字,将把ISR中相应位清0。在完全嵌套方式下,采用普通EOI方式。,特殊中断结束方式该种方式下,在中断服务程序结束,执行IRET之前,向8259A送一个“特殊EOI”命令字,可将ISR中指定位清0。,8259A中断管理(工作)方式(续),.,99,普通EOI,优先级循环方式执行IRET之前,向8259A送一个“普通EOI,优先级循环方式”命令字,将ISR中级别最高的置1位清0,同时完成优先级循环。,自动EOI优先级循环方式在CPU响应中8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0,并完成优先级循环。,8259A中断管理(工作)方式(续),.,100,特殊EOI,优先级循环方式,当前中断服务结束,执行IRET之前,向8259A送一个“特殊EOI,优先级循环方式”命令字,可将ISR中指定位清0。并完成优先级循环。,8259A中断管理(工作)方式(续),.,101,总线连接方式,缓冲方式如果8259A通过总线驱动器和系统数据总线相连,则8259A应采用缓冲方式;此时SP/EN为输出端,它输出一个低电平信号,可作为总线驱动器的启动信号。非缓冲方式如果8259A数据线和系统数据总线直接相连,则8259A应工作于非缓冲方式下。,8259A中断管理(工作)方式(续),.,102,三、8259A的级联主8259A的中断请求端IR0IR7用于接收从8259A的中断输出,最多可扩展至64级优先权中断。CAS0、CAS1、CAS2作为从片识别码。,.,103,7.3.28259A的编程,8259A的两种命令字初始化命令字:ICW1ICW4操作命令字:OCW1OCW38259A的启动:必须先通过编程写入初始化命令字,使它处于工作起始状态;初始化过程:按照固定的顺序进行。ICW1、ICW2必须写,ICW3、ICW4视具体情况而定。,.,104,初始化命令字ICW,有4个初始化命令字ICW8259A在开始工作前必须写入必须按照ICW1ICW4顺序写入ICW1和ICW2是必须写ICW3和ICW4由工作方式决定是否写,.,105,ICW1中断请求触发方式设定,ICW1是第一个初始化命令字ICW1使用偶端口(A0=0)D41,作为ICW1特征写入ICW1时,自动将中断屏蔽寄存器IMR清0,并恢复各中断源的优先级为IR0最高,IR1次高,,IR7最低。,.,106,ICW1的格式芯片控制字,.,107,D0(IC4)位:是否写ICW4选择。D0=,需要写ICW4;D0=,不写ICW4。D1(SNGL)位:单片多片选择。D1=0,多片级连使用;D1=1,单片使用。D3(LTIM)位:触发方式选择D3=0,边沿触发;D3=1,电平触发。D7、D6、D5、D24位:8086CPU不用(置0)D4位:特征位D4=1,表示写ICW1字,.,108,ICW2中断类型号设定,ICW2的功能是设置中断类型号;它使用奇端口(A0=1);紧跟在ICW1之后设置;,.,109,ICW2的格式,.,110,D7D3(T7T3)中断类型号的高5位,由用户写入中断类型码的低3位由8259A自动设定IR0为000、IR1为001、IR7为111它在第一个INTA到来时,将这个编码写入低3位D2、D1、D0三位固定为0,.,111,例若对8259A采用电平触发,单片使用,需写ICW4,则程序段为:,例在PC系列中断系统中,硬盘的中断类型号的高5位是08H,它的中断请求线连到8259A的IR5上,写ICW2字的程序段为:MOVAL,08H;中断类型号高5位,00001000BOUT21H,AL;写入ICW2端口(A0=1),MOVAL,1BH;ICW1的内容,00011011BOUT20H,AL;写入ICW1端口(A0=0),.,112,ICW3中断级连方式设定,ICW3仅在多片级连方式中使用ICW3使用奇端口(A0=1),.,113,主8259A,若Si=1,表示IRi引脚上接有从片;从8259A,用ID2ID1ID0的编码表示本从片接在主8259A的哪根引脚上;IR0IR7对应的编码为000111。,ICW3的格式,.,114,ICW4中断结束,嵌套方式设定,ICW4使用奇端口(A0=1);它确定中断结束的方式和中断嵌套的方式ICW4的格式为:,.,115,D0(PM)位:系统选择。D0=0,用于8085系统;D0=1,用于8086系统D1(AEOI)位:中断结束方式选择。D1=0,普通EOI方式;D1=1,自动EOI方式D3(BUF)位:缓冲方式选择。D3=1,工作于缓冲方式D3=0,工作于非缓冲方式在缓冲方式下,SP/EN引脚输出给总线收发器,此时,由M/S位来定义本8259A是主片或是从片。,.,116,D2(M/S)位:主/从片选择。当BUF=1时(缓冲方式),D2=0为从片;D2=1表示主片;当BUF=0时,M/S位无意义。D4(SFNM)位:中断嵌套方式选择。D4=0表示普通全嵌套方式;D4=1表示特殊全嵌套方式。D7D6D5=000,.,117,例多片8259A级连方式连接,从片A和B的中断请求线INT分别接到主片的IR3和IR6,故:,从片A的ICW3=00000011B=03H从片B的ICW3=00000110B=06H主片的ICW3=01001000B=48H从片A程序段为:MOVAL,03H;写从片A的ICW3OUT0A1H,AL;ICW3的端口地址(A0=1),.,118,从片B的程序段:MOVAL,06H;写从片B的ICW3OUT0B1H,AL;ICW3的端口地址(A0=1)主片的程序段:MOVAL,48H;写主片的ICW3OUT81H,AL;ICW3的端口地址(A0=1),.,119,例PT86单板机中,CPU为8086,非自动结束方式;使用2片8259A,非缓冲方式;主片为特殊全嵌套方式。主片的ICW4=00010101B=15H程序段为:MOVAL,15H;ICW4的内容MOVDX,0FFDFH;ICW4的端口地址(A0=1)OUTDX,AL,.,120,操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1OCW3OCW的写入时没有顺序要求,.,121,OCW1中断屏蔽字,对IRi输入中断请求进行屏蔽控制;OCW1占用奇地址(A0=1);OCW1格式为,Di(Mi)=1,则IRi位中断请求被屏蔽(置中断屏蔽)Di(Mi)=0,则IRi位中断请求被开放(清中断屏蔽),.,122,例要使IR3开放,其余均被屏蔽,则OCW1=11110111B=0F7H程序段为:MOVAL,0F7HOUT21H,AL;21H是8259A奇端口(A0=1)例5.12IMR寄存器的内容可读出。MOVAL,0;置IMR为全“0”OUT21H,AL;OCW1的口地址(奇地址)INAL,21H;读IMR(奇地址),.,123,ORAL,AL;检查是否为全“0”JNZERR;不为“0”,则转错误处理MOVAL,0FFH;置IMR为全“1”OUT21H,AL;OCW1的口地址INAL,21H;读IMRADDAL,1;检查是否为全“1”JNZERR;不为全“1”,转错误处理,.,124,OCW2优先级循环及结束方式操作字,设定8259A的中断优先级循环和结束方式OCW2占用偶地址(A0=0)OCW2格式为:,.,125,D7(R):中断优先级循环设定D7=0,固定优先权方式D7=1,循环优先权方式D6(SL):中断级别指定D6=0,不指定中断级,L0L2编码无效D6=1,用L0L2编码来指定中断优先级,.,126,D5(EOI):中断结束命令位当ICW4中的AEOI位=0时,D5=1可使ISR寄存器中相应位清“0”即中断结束。D2D1D0(L2L1L0):中断等级编码。L2L1L0的8种编码:000B111B分别与IR0IR7对应D4D3:特征位。D4D3=00,表示是OCW2,.,127,.,128,R,SL,EOI不同设置的意义说明编码=001:普通EOI命令。它在中断服务程序结束时发出,8259A接到该命令后,将当前ISR中优先级最高的置“1”位清“0”。编码=011:特殊EOI命令。当中断处理结束,8259A接收到该命令后,将ISR中由L2L1L0编码指定的相应位清“0”。,.,129,编码=101:普通EOI循环命令。将ISR中优先级最高的置“1”位清“0”,并将刚结束的中断请求IRi赋予最低优先级,把最高优先级赋予IRi+1,其它级别按循环排序。编码=111:特殊EOI循环命令。将ISR中由L2L1L0编码指定的相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变。,.,130,编码=000和100:使8259A取消自动EOI循环方式(复位)和设置自动EOI循环方式(置位)。在自动EOI循环方式下,8259A在接收到中断响应信号后,将ISR中相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变。编码=110:向8259A发置优先权命令,将最低优先级赋予由由L2L1L0编码指定的中断请求IRi,其它中断请求的级别按循环方式分别赋给。,.,131,OCW3查询中断方式和特殊屏蔽方式操作,OCW3的端口为偶地址(A0=0)OCW3格式为,.,132,.,133,D4D3=01是OCW3的特征位D6(ESMM):特殊屏蔽方式允许位ESMM=0,将SMM位屏蔽,使其无效;ESMM=1,开放SMM位,使其有效。D5(SMM):特殊屏蔽方式设定当ESMM=1时,若SMM=1,选择特殊屏蔽方式;SMM=0,不选择特殊屏蔽方式D2(P):查询命令标识位P=1,CPU将执行一条读状态字指令,并使读其它寄存器命令无效;P=0,不读中断状态字。,.,134,D1(RR)D0(RIS):读ISR和IRR中的状态信息标识位,仅当P=0时有效。RR=1,RIS=0表示在下一条“IN”指令时从偶地址(A0=0)读IRR中的状态信息;RR=1,RIS=1表示在下一条“IN”指令时从偶地址(A0=0)读ISR中的状态信息;RR=0,则RIS位无效。IMR中的信息可直接用“IN”指令从奇地址(A0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论