第十章中断系统及中断控制器_第1页
第十章中断系统及中断控制器_第2页
第十章中断系统及中断控制器_第3页
第十章中断系统及中断控制器_第4页
第十章中断系统及中断控制器_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章中断系统及中断控制器,10.1中断的基本概念10.2可编程中断控制器8259A10.38259A应用举例,第一节中断的基本概念,1.中断的概念:1956年,美国,IBM公司IBM7049机上首先使用了中断处理技术,并开始使用“中断”(interrupt)这一术语。中断最初是作为处理器与外部设备交换信息的一种控制方式提出的。由此,最初的中断全部是对外部设备而言的,称为外部中断或硬件中断。随着计算机技术的发展,中断的范围也随之扩大,出现了内部软件中断的概念,它是为解决机器内部运行时出现的异常以及为编程方便而提出的。,不论哪种中断都遵循同样的中断处理过程,中断:处理器暂停执行当前程序,转而处理随机发生的事件,处理完毕后再返回到断点处继续执行原来程序的过程。,2.中断类型号及中断向量表,所谓中断向量,实际上就是中断服务程序的入口地址,每个中断类型对应一个中断向量。,中断类型号通过一个地址指针表与中断服务程序的入口地址相联,在实模式下,该表称为中断向量表。,中断向量表包含256个中断向量。每个中断向量包含两个字(4个字节),高地址字为中断服务程序所在代码段的段基址,低地址字为代码段中中断服务程序第一条指令的偏移量。,实模式下,中断向量表存放在内存最低端的1K单元之中,物理地址00000H003FFH,中断类型码和中断向量所在位置之间的对应关系,类型255,类型32,类型0,类型4,类型3,类型2,类型1,0000:0000H0000:0003H,0000:0010H0000:0013H,0000:000CH0000:000FH,0000:0008H0000:000BH,0000:0004H0000:0007H,供用户定义的中断(224个),专用中断(5个),保留中断(27个),0000:03FCH0000:03FFH,中断类型号*4=该类型入口地址的地址,例题,类型号为20H的中断所对应的中断向量存放在0000:0080H开始的4个单元中,如图示,则它所对应的中断服务程序的入口地址为。一个系统中对应中断类型号17H的中断服务程序存放在2345:7890H开始的内存区域中,则17H对应的中断向量存放于何处?,17H*4=5CH,4030:2010H,10.2可编程中断控制器8259A,8259A是一种可编程中断控制器,有如下功能:一片Intel8259A可管理8个中断请求,并把当前优先级最高的中断请求送到CPU的INTR端。当CPU响应中断时,为CPU提供中断类型码。8个外部中断的优先级排列方式,可以通过对8259A编程进行指定。也可以通过编程屏蔽某些中断请求,或者通过编程改变中断类型码。允许9片8259A级联,构成64级中断系统,10.2.18259A的引脚及工作原理,D7D0:数据总线,双向,三态。用于与CPU之间传送命令、状态、中断类型码。RD:读信号,输入。用来通知8259把某个内部寄存器的值送数据线D7D0。WR:写信号,输入。用来通知8259把数据线D7D0上的值写入内部某个寄存器。CS:片选信号,输入。通过地址译码逻辑电路与地址总线相连。A0:地址线,输入。用来指出当前8259的哪个端口被访问,选择内部寄存器的端口地址。在标准AT机中,使用两片8259构成主从式中断系统,主8259的端口地址:20H,21H从8259的端口地址:A0H,A1H,INT:中断请求,输出。把IR7IR0上的最高优先级请求传送到CPU的INTR引脚,向CPU发中断请求。INTA:中断响应,接收CPU的中断应答信号。CPU发出的中断响应信号为两个负脉冲。第一个负脉冲作为中断应答信号,第二个负脉冲到来时,8259从数据线D7D0上发出中断类型码。IR7IR0:外设中断请求输入。在含有多片8259的复杂系统中,主片的IR7IR0分别与从片的INT端相连,用来接收来自从片的中断请求。CAS2CAS0:级联线,用来指出具体从片。SP/EN:从设备编程/缓冲器允许1)采用缓冲方式时,作为输出,用做控制缓冲器接收和发送的信号。2)采用非缓冲方式时,作为输入,用做决定8259A的主从设备标志。为1时,指明8259A为主设备.。为0时,指明8259A为从设备。,10.2.28259A的内部结构,。,1、数据总线缓冲器,8位双向三态缓冲器,通常与数据总线的低8位相连,是8259A与CPU间数据传送的接口,CPU向8259A发送的数据、命令、控制字及8259A向CPU输入的数据,状态信息都要经过数据总线缓冲器,2、读写控制电路,接收CPU送来的读写命令、片选信号以及端口选择信号A0,以实现CPU对8259A的读写操作。当CPU执行OUT指令时,信号有效并与A0配合,使8259A接收CPU由数据总线送来的初始化命令(ICW)和操作命令(OCW);当CPU执行IN指令时,信号有效并与A0配合,将8259A的内部状态经数据总线传送给CPU。信号对8259A的读写操作控制如表10-1所示。,3、级联缓冲器/比较器,该模块主要用于多片8259A级联和数据缓冲方式,4、中断请求寄存器IRR,有锁存功能的8位寄存器,用来存放外部输入的中断请求信号IR7IR0。每一位对应一个外部中断请求信号IRi,当某个IR端有中断请求,IRR中的相应位置“1”,其内容可用操作命令字OCW3读出。当中断请求被响应时,IRR的相应位就复位,5、中断屏蔽寄存器IMR,8位寄存器,与8259A处理的8级中断源IR7IR0相对应,当用软件将IMR中的某一位i置“0”,表示对应的中断IRi被允许,即允许IRR寄存器中相应位的中断请求进入中断优先级判别器。反之,将IMR的某一位IMR置“l”,表示对应的中断IRi被屏蔽。因此,通过IMR寄存器可以对各个中断源进行屏蔽或开放。屏蔽功能由操作命令字OCW1实现。,6、中断服务寄存器ISR,8位寄存器,与8级中断IR7IR0相对应,用来记录正在处理中的中断请求的优先级,当任何一级中断被响应后(当时它的优先级最高),在第一个中断响应负脉冲到来时,ISR中的相应位置“l”,7、优先级判别器PR,也叫优先级分析器对IRR寄存器送来的中断申请信号(只有IRR中置1且IMR中对应位置0的位才能进入PR)进行优先级判别,选出优先级最高的中断申请;当出现多重中断时,PR将新出现的中断请求和正在被服务的中断优先级进行比较,确定新的优先级是否高于正在处理的中断级,当1个中断请求被判定为具有最高的优先级时,PR通过控制电路向CPU发出中断请求信号INT,并在8259A获得第一个中断响应信号时使ISR寄存器中相应位置1。,8、控制电路,该模块是8259A的内部控制器,控制8259A芯片的内部工作过程。实际上整个8259A芯片是在控制电路的控制下构成一个有机的整体并完成中断优先级管理功能。,10.2.38259A的工作方式,1、设置优先级方式2、屏蔽中断源的方式3、结束中断处理的方式4、连接系统总线的方式5、引入中断请求的方式,10.2.38259A的工作方式,1、设置优先级方式,中断请求按优先级07进行处理,0级中断的优先级最高当一个中断被响应时,中断类型码被放到数据总线上,当前中断服务寄存器ISR中的对应位ISn被置1,然后进入中断服务程序。一般情况下(除了自动结束中断方式),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。如果又来了新的中断,中断优先级裁决器总是将新收到的中断请求和当前中断服务寄存器中的IS位进行比较,判断新收到的中断请求的优先级是否比当前正在处理的中断优先级高,如果是,则实行中断嵌套。8259A最常用的工作方式,如果对8259A进行初始化以后没有设置其他优先级方式,那么,8259A就按一般完全嵌套方式工作。,1)一般完全嵌套方式,10.2.38259A的工作方式,1、设置优先级方式,该方式和全嵌套方式基本相同只有一点不同,同级能中断同级的中断请求特殊全嵌套方式一般用在8259A级连的系统中,2)特殊完全嵌套方式,10.2.38259A的工作方式,1、设置优先级方式,一般用在系统中多个中断源优先级相等的场合。在这种方式下,优先级队列是变化的,一个设备受到中断服务以后,它的优先级自动将为最低在优先级自动循环方式中,初始优先级队列规定为IR0、IR1、IR2IR6、IR7,例:如果来IR4中断请求,则处理IR4。处理完IR4后,IR5位最高优先级,依次为IR6、IR7、IR0、IR1、IR2、IR3、IR4。系统中是否采用自动循环优先级,由8259A的操作命令字OCW2决定,3)优先级自动循环方式,10.2.38259A的工作方式,1、设置优先级方式,优先级特殊循环方式和优先级自动循环方式相比,只有一点不同:开始的最低优先级是由编程确定的,从而最高优先级也由此而定。比如,确定IR5为最低优先级,那么,IR6就是最高优先级。而在优先级自动循环方式中,一开始的最高优先级一定是IR0。,4)优先级特殊循环方式,10.2.38259A的工作方式,2、屏蔽中断源的方式,普通屏蔽方式中,8259A的每个中断请求输入端都可以都可以通过对应屏蔽位的设置被屏蔽,从而使这个中断请求不能从8259A送到CPU。屏蔽寄存器:它的每一位对应了一个中断请求输入,程序设计时,可以通过设置操作命令字OCW1使屏蔽寄存器中任一位或几位置1。当某一位为1时,对应的某一级中断就受到屏蔽。需要撤销对某些中断的屏蔽或需要撤销对所有中断的屏蔽,可以通过OCW1重新设置来实现,1)普通屏蔽方式,10.2.38259A的工作方式,2、屏蔽中断源的方式,设置了特殊屏蔽方式之后,再用OCW1对屏蔽寄存器中某一位进行设置时,就会同时使当前中断服务寄存器中的对应位自动清0,这样,就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。在有些场合,希望一个中断服务程序能动态的改变系统的优先级结构。例如,在执行中断处理程序某一部分时,希望禁止较低级的中断请求,但是,在执行中断处理程序另一部分时,又能够开放本身的优先级较低的中断请求。,2)特殊屏蔽方式,10.2.38259A的工作方式,2、屏蔽中断源的方式,特殊屏蔽方式总是在中断处理程序中使用的。使用了这种方式后,尽管系统当前仍然在处理一个较高级的中断,但是,从外界看来,由于8259A的屏蔽寄存器中,对应与此中断的数位被设置为1,并且当前中断服务器中的对应位被清0,所以,好像不在处理任何中断,从而,这时即使有最低级的中断请求,也会得到响应。,2)特殊屏蔽方式,10.2.38259A的工作方式,3、结束中断处理的方式,中断处理的结束:,一个中断请求得到响应时,8259A都会在当前中断服务寄存器中设置相应位ISn,这样,为此后中断裁决器的工作提供了依据。当中断处理程序结束时,必须使ISn位清0,否则,8259A的中断控制功能就会不正常。这个使ISn位清0的动作就是中断结束处理。,10.2.38259A的工作方式,3、结束中断处理的方式,1)中断自动结束方式,系统一进入中断过程,8259A就自动将当前中断服务寄存器中的对应位ISn清除用在系统中只有一片8259A,并且多个中断不会嵌套的情况设置方法:对8259A初始化时,使初始化命令字ICW4的AEOI位为1就行了。,10.2.38259A的工作方式,3、结束中断处理的方式,2)一般的中断结束方式,CPU用输出指令往8259A发出一般中断结束命令时,8259A就会把当前中断服务寄存器中的最高的IS位复位(相当于结束了当前正在处理的中断)用在完全嵌套情况下中断结束命令:写OCW2的EOI=1,SL=0,R=0即可,10.2.38259A的工作方式,3、结束中断处理的方式,3)特殊的中断结束方式,在非完全嵌套方式下,因为中断优先级不确定,用当前中断服务寄存器时无法确定哪一级中断位最后响应和处理的,也就是说,无法确定当前正在处理的是哪级中断,这时,就要采用特殊的中断结束方式。在程序中发一条特殊中断结束命令,命令指出了要清除当前中断服务寄存器中的哪个ISn位。特殊中断结束命令:往8259A偶地址端口输出操作命令字OCW2来实现,10.2.38259A的工作方式,4、连接系统总线的方式,1)缓冲方式,在多片8259A级联的大系统中,8259A通过总线驱动器和数据总线相连,这就是缓冲方式。,2)非缓冲方式,将8259A直接与数据总线相连,用在只有单片或是片数不多的情况下。两种方式通过8259A的初始化命令字ICW4设置,10.2.38259A的工作方式,5、引入中断请求的方式,1)边沿触发方式,中断请求输入端出现的高电平作为中断请求信号,2)电平触发方式,中断请求输入端出现的高电平作为中断请求信号。,通过初始化命令字ICW1设置,10.2.38259A的工作方式,5、引入中断请求的方式,3)中断查询方式,设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不是用INT信号向CPU发中断请求信号CPU关中断,即中断允许触发器复位CPU使用软件查询来确认中断源,实现对设备的中断服务,10.2.48259的初始化命令字和操作命令字,8259A的工作状态和操作方式,由CPU的命令而定。命令有两种每片8259A有2个片内地址A0=0和A0=1,所有的命令都是通过这两个端口来实现的。,(一)8259的初始化命令字,ICW1ICW4在初始化程序中设定,且在整个工作过程中保持不变。ICW1ICW4必须按顺序设定。ICW1写入8259偶地址中(A0=0,在AT机中为20H/A0H)ICW2ICW4写入8259奇地址中(A0=1,在AT机中为21H/A1H)。,1).ICW1设置工作方式,对A0=0的端口写入一个D4=1的数据,表示初始化编程开始。D7-D5:8086/8088系统中不用,一般设为0D4:总是设置为1,表示现在设置的是初始化命令字ICW1D3:LTIM中断信号的触发方式0:边沿1:高电平D2:未用D1:SGNL是否单片方式0:多片级联1:单片D0:IC4是否有ICW40:无1:有,在8086/8088系统中,ICW4是必须使用的,MOVAL,13H;设置ICW1OUT20H,AL,2).ICW2设置中断类型码,用来设置中断类型码,一旦设定,则IR0-IR7的中断类型号都确定在写ICW1之后,对A0=1的端口第一次写入的数据是ICW2。D7D3可设置,D2D0由引脚IRi确定。在8086/8088系统中,设置D7D3为00001,D2D0(由8259A根据IR0IR7自动填充为000111)。在PC/XT中ICW2为00001000B,则中断号:类型号中断号:类型号IR0:08H时钟中断IR4:0CHCOM1IR1:09H键盘中断IR5:0DH硬盘IR2:0AH保留IR6:0EH软盘IR3:0BHCOM2IR7:0FHLPT1,MOVAL,8;设置ICW2为8HOUT21H,AL,3).ICW3设置级联,系统中有级联(ICW1.SNGL=0),在ICW2之后写ICW3。对于主片:置1的位表示对应的引脚IR有从片级联。对于从片:用D2D0表示和主片的对应引脚级联,4).ICW4方式控制初始化,ICW1.IC4=1时,有ICW4。D7D5:总是为0,用来作为ICW4的标识码。D4:SFNM中断的嵌套方式0:一般嵌套1:特殊的全嵌套在一般嵌套方式下,优先级IR0IR7从高到低。D3(BUF):如为1,则为缓冲方式。D2(M/S):缓冲方式下表示本片为主片还是从片。即BUF=1时,1主片,0,从片。D1:AEOI自动结束中断方式0:不自动清除ISR1:CPU响应中断后,自动清除D0:PM微处理器类型1:8086/80880:8080/8085/Z80,MOVAL,1;OUT21H,AL;,初始化编程一般在系统启动时进行,初始化以后系统才可以接收中断请求信号,5)8259A芯片的初始化流程,.,例:某机中8259A的端口地址是20H、21H,初始化序列如下:MOVAL,13H;设置ICW1OUT20H,ALMOVAL,8;设置ICW2为8HOUT21H,ALMOVAL,1;ICW4设置为1HOUT21H,AL;,ICW1:单片、上升沿触发、使用ICW4,ICW2:中断类型码是08H0FH,ICW4:非AEOI方式,(二)8259的操作命令字OCW,系统初始化完成以后,可以在应用程序中进行操作命令字编程。OCW1设置和清除中断屏蔽寄存器MX=1表示屏蔽中断源IRX,例如:读OCW1(IMR中断屏蔽字),INAL,21H;则AL内容为IMRANDAL0FDH;将键盘IR1对应的中断屏蔽;字D1位清0,即开放键盘中断OUT21H,AL:INAL,21H;屏蔽键盘中断ORAL,2OUT21H,AL,OCW2设置优先级循环方式和中断结束方式对A0=0端口写入D4D3=00的数据,表示是OCW2R:表示是否循环;1:优先级循环SL:表示L2L1是否有效;1:有效L2、L1、L0:具体要清除当前中断服务寄存器中的哪一位;指出循环开始时哪个中断的优先级最低。EOI:中断结束命令位。为1,使当前中断服务器中的IS复位。EOI命令就是通过OCW2中的第5位即EOI位设置的。EX:MOVAL,20HOUT20H,AL;发中断结束命令,OCW3的功能有三个方面设置和撤销特殊屏蔽方式设置中断查询方式设置对8259A内部寄存器的读出。对A0=0端口写入D4D3=01的数据,表示是OCW3,ESMM称为特殊的屏蔽模式允许位,SMM为特殊屏蔽模式位P位称为查询方式位,当P=1时,使8259A设置为中断查询方式当P=0时,若RR位为1,构成对8259A内部寄存器的读出命令,来读取寄存器IRR和ISR的内容读取方法:先用输出指令往8259A的偶地址端口发读出命令,接着用输入指令从8259A的偶地址端口读取寄存器IRR或ISR的内容。如果RR=1,RIS=0,那么,就构成了对IRR寄存器的读出命令,所以,下一条输入指令读得的是IRR寄存器的值。如果RR=1,RIS=1,那么,就构成了对ISR寄存器的读出命令,所以,下一条输入指令读得的是ISR寄存器的值。,例如:设置OCW3为00001010则对下一条输入指令读的是IRR的内容。MOVAL,0AH;OUT20H,ALINAL,20H,第三节8259A应用举例,PC/AT中,8259的使用情况为:2片8259级联,提供15级向量中断。从片的INT接主片的IR2。端口地址:主片20H、21H,从片A0H、A1H。主片和从片均采用边沿触发。采用全嵌套优先级排列方式采用非缓冲方式,主片SP/EN接+5V,从片SP/EN接地。主片的类型码为08H0FH,从片的类型码为70H77H。,PC/AT中,8259A连线图,ICW1AEQU20H;主片端口地址ICW2AEQUICW1A+1ICW3AEQUICW2AICW4AEQUICW2AICW1BEQU0A0H;从片端口地址ICW2BEQUICW1B+1ICW3BEQUICW2BICW4BEQUICW2B,PC/AT机主、从8259的初始化程序,;-主片8259A-MOVAL,11H;ICW1,边沿触发,多片,ICW4OUTICW1A,ALNOP;I/O端口延时MOVAL,08H;ICW2,中断类型码OUTICW2A,ALNOPMOVAL,04H;ICW3,IR2接从片OUTICW3A,ALNOPMOVAL,01H;ICW4,非缓冲,全嵌套,非自动结束OUTICW4A,ALNOP,;-从片8259A-MOVAL,11H;ICW1,边沿触发,多片,需ICW4OUTICW1B,ALNOPMOVAL,70H;ICW2,中断类型码OUTICW2B,ALNOPMOVAL,02H;ICW3,INT接主片的IR2OUTICW3B,ALNOPMOVAL,01H;ICW4,非缓冲,全嵌套,非自动结束OUTICW4B,ALNOP,中断向量表的操作,读写中断向量表不能使用MOV指令,而应调用相应的DOS功能取中断向量预置AH=35H,AL=中断类型号执行INT21H把类型号为AL的中断向量取出到ES:BX中设置中断向量预置AH=25H,AL=中断类型号,DS:DX=中断向量执行INT21H把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处,MOVAL,9;把中断9的中断向量取出,保存MOVAH,35H;取中断向量,调用时AL含十六进制中断号,INT21H;对指定的中断9,返回时,ES:BX为中断服务入口地址。MOVSAVEIP9,BXMOVSAVECS9,ES,MOVDX,OFFSETKBINT;设置新中断9的中断向量PUSHDSMOVAX,SEGKBINTMOVDS,AX;设置中断向量,调用前AL内容为被设中断类型号,;DS:DX入口地址,将置该中断向量为DS:DX指定的4个字节MOVAL,9MOVAH,25HINT21H;,STI;开中断CLI;关中断,作业:p177458,4.试按下列要求对8259A进行初始化:系统CPU为8086,系统中有一片8259A,中断申请信号采用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论