版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 中断控制器、计数/定时控制器及DMA控制器第一节 可编程中断控制器8259A一、8259A芯片内部结构数据总线缓冲器读/写控制器级联缓冲器/比较器控制电路中断服务寄存器(ISR)优先权判别器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)D7D0RDWRA0CAS0CAS1SP/ENINTAINTIR0IR7CSCAS2 8259A内部结构图1、数据总线缓冲器这是一个双向8位3态缓冲器,由它构成8259A与CPU之间的数据接口,是8259A与CPU交换数据的必经之路。2、读/写控制电路用来接收来自CPU的读/写控制命令和片选控制信息。由于一片8259A只占两个I/O端口地址,可
2、用末位地址码A0来选通端口,端口的其他高位地址作为片选信号CS输入。当CPU执行OUT指令时,WR信号与A0配合,将CPU通过数据总线(D7D0)送来的控制字写入8259A中有关的控制寄存器。当CPU执行IN指令时,RD信号与A0配合,将8259A中内部寄存器内容通过数据总线(D7D0)传送给CPU。3、级联缓冲/比较器一片8259A只能接收八级中断从IR7IR0输入,当引入的中断超过8级时,可用多片8259A级联使用,构成主从关系,对于主8259A,级联信号CAS2CAS0是输入信号。SP/EN是一个双功能信号,当8259A处地缓冲状态时,EN有效,表示允许8259A通过缓冲存储器输出;EN
3、无效,表示CPU写8259A。当8259A处于非缓冲状态时,SP用作表明主从关系,SP=1表示是主8259A,SP=0表示是从8259A。4、中断请求寄存器IRR这是一个8位寄存器,用来存放由外部输入的中断请求信号IR7IR0。当某一个IRi端呈现高电平时,该寄存器的相应位置“1”,显然最多允许8个中断请求信号同时进入,这时,IRR寄存器将被置成全“1”。5、中断服务寄存器ISR这是一个8位寄存器,用来记录正在处理中的中断请求。当任何一级中断被响应,CPU正在执行它的中断服务程序时,ISR寄存器中相应位置“1”,一直保持到该级中断处理过程结束为止。多重中断情况下,ISR寄存器中可有多位被同时置
4、“1”。6、中断屏蔽寄存器IMR这是一个8位寄存器,用来存放对各级中断请求的屏蔽信息。当该寄存器中某一位置“1”时,表示禁止这一段中断请求进入系统,通过IMR寄存器可实现对各级中断的有选择的屏蔽。7、优先权判别器PR用来识别各中断请求信号的优先级别。当多个中断请求信号同时产生时,由PR判定当前哪一个中断请求具有最高优先级,于是系统首先响应这一级中断,转去执行相应的中断服务程序。当出现多重中断时,由PR判定是否允许所出现的中断去中断正在处理的中断而被优先处理。一般处理原则是允许高级别中断打断低级别中断,而不允许低别中断打断高级中断,也不允许同级中断互相打断。8、控制电路它是8259A内部的控制器
5、。根据中断请求寄存器IRR的置位情况和优先权判别器PR的判定结果,向8259A内部其他部件发出控制信号,并向CPU发出中断请求信号INT和接收来自CPU的中断响应信号INTA,控制8259A进入中断服务状态。实际上8259A芯片是在控制电路控制之下构成一个有机的整体。二、8259A芯片的工作方式(一)8259A中断触发方式:电平触发方式和边沿触发方式,可通过软件来定义。1、当为电平触发方式时,从IR7IR0输入的有效信号应为高电平,而且必须保持有效到响应它的第一个INTA信号的前沿,否则这个IRi信号有可能丢失;但有效信号也不能持续时间太长,如果在中断服务寄存器ISR相应位复位后该IRi信号还
6、持续有效,则8259A就可能重新响应这一中断请求而出现重复中断现象。为避免这种情况产生,在ISR某一位被复位时应将相应的IRi信号置成无效。采用这种电平触发方式还有一个问题必须注意,即如果通过一个IRi端引入多个中断请求,它们由软件进行排队;那么当这个IRi端上一个中断请求的有效期间,另一个中断请示又产生时,将有可能丢失第2个中断请求信号,所以,对中断请求信号的要求是不能太长也不能太短。2、当为边沿触发方式时,不会产生上术这的丢失中断请求的现象,这时当IRi端上出现由低电平到高电平的正跳变时,表示中断请求信号有效,最好用负脉冲的后沿来实现。采用这种边沿触发方式不会出现重复中断现象,但也要求在响
7、应某中断请求的第1个INTA信号有效前不要出现下一个中断请求,否则有可能丢失前面一个中断请求。3、任可触发方式都要送中断类型码给CPU,中断类型码的格式如下图示:D7D6D5D4D3××× 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1IR0IR1IR2IR3IR4IR5IR6IR7用户通过软件定义 中断类型码的形成由一片8259A引入的8级中断请求的类型码肯定是连续的。它们在中断入口地址表中的位置取决于由软件定义的D7D3位的状态,并由对8259A进行初始化时写入的相应控制字来确定。例如,定义D7D3=10001时
8、,则该8级中断的类型码将顺序为88H8FH。(二)8259A的中断优先权管理8259A可采用优先权级别固定分配和循环设置两种方式。各中断源的优先级确定后,一般处理原则只允许高级中断打断低级中断而被优先处理,禁止低级打断高级或同级中断相互打断。8259A中对中断优先权的管理有三种方式:完全嵌套方式、自动循环方式和中断屏蔽方式。1、完全嵌套方式完全嵌套方式是8259A被初始化后自动进入的基本工作方式,在这种方式下,由各个IRi端引入的中断请求具有固定的中断级别。IR0具有最高优先级,IR7具有最低优先级,其他级顺序类推。主程序采用完全嵌套方式时,ISR寄存器中某位置“1”,表示CPU当前正在处理这
9、一级中断请求,8259A将允许比它级别高的中断请求进入,打断当前的中断服务程序而被优先处理,但禁止与它同级别或比它级别低的其他中断请求进入。采用这种完全嵌套方式,中断嵌套的深度取决于整个中断系统所具有的中断级数,在一个具有8级中断的系统中,最大的中断嵌套深度为8,见下图。中断服务程序中断服务程序中断服务程序IR7有效IR6有效7级6级1级0级STISTISTISTIRETIRETIRETIRETIIR5有效IR0有效EOIEOIEOI八级嵌套中断服务程序 8259A中断控制器8级中断嵌套过程在中断嵌套过程中,中断服务寄存器ISR的内容将不断变化,最后有可能使(ISR)=FFH,表示当前有8级中
10、断请求正在被服务。首先结束的应是最高级的中断,待CPU由高级到低级将全部中断处理结束返回到主程序时,ISR寄存器将重新复位为全“0”。这种情况下要求堆栈的容量比较大。因为每响应一次中断至少往堆栈压入6个字节的信息(FLAGS、CS、IP寄存器),在各级中断处理过程中,还有可能要将其他资源压入堆栈保护。除此之外,在上述中断嵌套过程中,还要求CPU每响应一次中断进入中断服务程序后,应安排开中断指令(STI)将IF标志位置“1”,否则,由8259A引入的高级中断将无法进入系统。当任何一级中断处理完毕,CPU应向8259A回送结束命令(EOI),以便8259A将ISR寄存器中相应位清“0”,标志一级中
11、断处理过程完全结束。8259A在完全嵌套方式下,可采用以下3种中断结束方式:(1)普通EOI方式:任一中断服务程序结束时,只给8259A传送一个EOI结束命令,8259A收到这个EOI命令后,自动将ISR中级别最高的置“1”位清“0”。这种结束方式最简单,但是只有当结束的中断总是尚未处理完的级别最高的中断时,才能使用这种结束方式。(2)特殊EOI方式:在普通EOI方式的基础上,当中断服务程序结束给8259A发出EOI命令的同时,将当前结束的中断级别也传送给8259A,8259A将ISR中指定级别的相应位清“0”,这种结束方式可在任何情况下使用。(3)自动EOI方式:任一中断被响应后,ISR寄存
12、器中相应位置“1”,CPU将进入中断响应总线周期,在第2个中断响应信号(INTA)结束时,自动将ISR寄存器中相应位清“0”。这种结束方式,当中断服务程序结束时,CPU不用向8259A回送任何信息。这种方式有明显缺点,任何一级中断在执行中断服务程序期间,在8259A中没有留下任何标志,如果在此过程中出现了新的中断请求,则只要当前IF=1,不管新出现的中断级别如何,都将打断正在执行的中断服务程序而被优先执行,这就有可能出现低级中断打断高级或同级中断,通常将这种情况称作“重复嵌套”,嵌套深度无法控制,因此使用自动EOI方式一定要小心。2、自动循环方式(优先级循环方式)自动循环方式是改变中断请求优先
13、级别的策略之一,其基本思想是:每当任何一级中断被处理完,它的优先级别就被改变为最低级,而将最高优先级赋予原来比它低一级的中断请求。实现自动循环方式有下面三种做法:(1)普能EOI循环方式:当任何一级中断被处理完后,CPU给8259A回送普通EOI命令,8259A接收到这一命令后将ISR寄存器中优先级最高的置“1”位清“0”,并赋给它最低优先级,而将最高优先级赋给原来比它低一级的中断请求,其他中断请求的优先级别以循环方式类推。普通EOI循环方式举例如下:中断源IR7IR6IR5IR4IR3IR2IR1IR0原始状态ISR内容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR00100
14、0100优先级76543210处理完IR2ISR内容01000000优先级43210765处理完IR6ISR内容00000000优先级07654321(2)自动EOI循环方式:当任何一级中断响应后,在中断响应总线周期中,由第2个中断响应信号INTA的后沿自动将ISR寄存器中相应位清“0”,并立即改变各级中断的优先级别,改变方案与上述普通EOI循环方式相同。(3)特殊EOI循环方式:特殊EOI循环方式具有更大的灵活性,它可根据用户要求将最低优先级赋给指定的中断源。用户可在主程序或中断服务程序中利用置位优先权命令把最低优先级赋给某一中断源IRi,于是最高优先级便赋给IRi+1,其他各级按循环方式类
15、推。特殊EOI方式例子如下表所示。中断源IR7IR6IR5IR4IR3IR2IR1IR0初始状态ISR内容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR001000100优先级76543210执行置位优先权指令后ISR内容01000100优先级21076543注:这种情况下当第2级中断服务程序结束时,不能使用普通EOI方式,而必须使用特殊EOI方式,即向8259A发送IR2结束命令的同时,还应将IR2的当前级别传送给8259A,8259A才能正确地将ISR寄存器中的第2位清“0”3、中断屏蔽方式CPU可在任何时候安排一条清除中断标志指令(CLI),将中断标志清“0”,把所有的中
16、断请求禁止(屏蔽)。而要屏蔽某一级或某几级中断请求,必须通过对8259A的中断屏蔽寄存器的操作来实现。实现方法有两种:(1)普通屏蔽方式(也称一般屏蔽方式):将中断屏蔽寄存器IMR中的某一位或某几位置“1”,即可将相应级的中断请求屏蔽掉。这种屏蔽方式可在两种情况下使用。其一是当CPU在执行主程序时,要求禁止响应某级或某几级中断时,可在主程序中将IMR寄存器的相应位置“1”;其二是CPU在处理某级中断过程中,要求禁止级别比它高的某一级或某几级中断时,可在中断服务程序中将IMR寄存器的相应位置“1”,这样所实现的称作普通屏蔽方式。(2)特殊屏蔽方式:当CPU正在处理某级中断时,要求仅对本级中断进行
17、屏蔽,而允许其他优先级比它高或低的中断进入系统。对8259A进行初始化时,可利用控制寄存器SMM位的置位来使8259A进入这种特殊屏蔽方式。例如:若当前正在执行IR3的中断服务程序,希望进入特殊屏蔽方式时,只需在STI指令后,使IMR3=1、SMM=1,标志8259A已进入特殊屏蔽方式。此后,除IR3之外,其他任何级的中断均可进入,待IR3的中断服务程序结束时,应将IMR寄存器的第3位复位,并使SMM=0,标志退出特殊屏蔽方式,然后利用特殊EOI方式,由8259A将ISR寄存器的第3位清“0”。三、8259A芯片的级联使用一片8259A芯片只能管理8级中断,在多于8级中断的系统中,必须将多片8
18、259A级联使用。最简单的级联方式见下图,为两级级联方式。两级级联情况下,可管理的中断源最多为64级,如果还要增多中断源数量,可进一步扩展为多级级联。CAS0CAS1CAS2CAS0CAS1CAS2CAS0CAS1CAS2IR0IR1IR2IR6IR7SP/ENINTAINT8259A(主)INTAINTIR0IR1IR2IR3IR4IR5IR6IR7SP/EN8259A(从)INTAINTIR0IR1IR2IR3IR4IR5IR6IR78259A(从)SP/ENVCC中断请求输入中断请求输入判优选择判优选择CPU8259A级联使用时,主8259A上没有连接从8259A的IRi端,可直接与中断
19、源相连,这种方式下,对8259A初始化时,应使用支持级联方式的控制字进行定义。在8259A级联系统中,某一片从8259A的IRi端接收到一个或多个中断请求信号时,经过判优可确定当前的最高级中断得到响应,并通过INT向主8259A发出请求;经主8259A再次判优确认是当前最高级中断时,向CPU发出中断请求信号INT,以后的过程与单级使用时类似。8259A在级联使用方式下的中断响应总线周期时序见下图。»时钟ALELOCKINTAD0D7SP/EN(缓冲方式)CAS0CAS2MCE(从8288输出) INTIR0IR7第1个INTA周期第2个INTA周期nINT在第一个INTA有效时,主8
20、259A将级联地址从CAS2CAS0端输出给所有的从8259A芯片,到第二个INTA有效时,与主8259A发出的级联地址相符的从8259A将向CPU送出当前有中断类型码n,以后的操作过程与单级使用时相同。当从8259A引入的中断处理过程结束时,CPU应能送出两个EOI结束命令,一个送给主8259A,用来将主8259A中的ISR寄存器的相应清“0”;另一个送给从8259A,用来将从8259A中的ISR寄存器相应位清“0”,才标志一次中断处理过程的结束。例如,某系统的组成见下图,其中8086CPU工作在最小模式。整个系统最多可引入22级中断请求信号,#1从8259A引入的8级中断通过主8259A的
21、IR6端引入,#2从8259A引入的8级中断通过主8259A的IR4端引入,主8259A上其他的6个IRi端可直接引入其他中断请求。如果初始化时将它们定义为完全嵌套方式,意味着#2从8259A引入的中断请求优先级别高于#1从8259A引入的中断请求,它们由主8259A完全判优功能后才能引入系统。假定在某一时刻,#1从8259AIR7端接收到一个中断请求,经#1从8259A判优后决定响应这一中断请求,将ISR寄存器中第7位置“1”,于是通过INT向主8259A的IR6端发出请求,经主8259A再次判优,决定响应这一请求时,才将主8259A中ISR寄存器的第6位置“1”,CPU将从中断入口地址表中
22、得到相应的入口地址,转去执行中断服务程序。如果在执行中断服务程序过程中,#1从8259A的IR0端接收到一个新的中断请求。根据中断嵌套原则,#1从8259A中的IR0端优先级别高于IR7,应该允许新的中断请求进入,将ISR寄存器中第0位置“1”,并通过INT向主8259A的IR6端再次发出请求。但这时由于主8259A中ISR寄存器的第6位早已置“1”,不允许这一级的中断再进入,这便造成#1从8259A不能按完全嵌套方式工作,这显然是不合理的。为此需要采用特殊措施来解决这个问题。一种可取的方式被称为特殊完全嵌套方式,它只在级联方式下有效。当中断系统工作在级联方式,对主8259A初始化时,应将它定
23、义为特殊完全嵌套方式。WRRDM/IOINTRINTAAD0AD19CSA0INTAD7D0IR7IR5SP/ENCAS0CAS1CAS2从8259A #2CSA0INTAD7D0IR7IR0SP/ENCAS0CAS1CAS2从8259A #1INTCSA0INTAD7D0IR7IR4SP/ENCAS0CAS1CAS2主8259A82828286VCC8086INT采用特殊完全嵌套方式的中断级联系统中,任一个从8259A接收到一个中断请求经判优确定为当前最高优先级应该响应这一中断请求时,立即通过INT端向主8259A的相应IRi端提出请求。如果这时主8259A中ISR寄存器的相应位已经置“1”
24、,说明当前在同一个从8259A中接收到了比原来更高级的中断请求,主8259A应允许它进入;只要它是当前主8259A中最高级别的中断请求,就应通过INT向CPU发出新的中断请求,CPU将打断原来的中断服务程序而优先处理这一中断请求,转去执行相应的中断服务程序,以保证任一从8259A控制器能按完全嵌套方式正常操作。当#1号从8259A从IR7端接收到中断请求时,中断请求寄存器IRR将被置成如下状态:IRR10000000(#1号从8259A)经判优线路确定为当前#1号从8259A中最高优先级时,将ISR寄存器置成如下状态:ISR10000000(#1号从8259A)将从#1号8259AIRR寄存器
25、复位,并通过INT向主8259A的IR6端发出请求,将主8259A中的IRR寄存器置成如下状态:IRR01000000(主8259A)经主8259A判优确定为当前主8259A中最高优先级时,将ISR寄存器置成如下状态:ISR01000000(主8259A)然后将主8259A的IRR寄存器复位为全“0”,并通过INT向CPU发出中断请求信号ITNR。INTR有效时,CPU执行完当前指令后暂停执行下一条指令进入中断响应总线周期,获得中断类型码后,可转去执行相应中断服务程序。CPU执行上述中断服务程序过程中,#1从8259A从IR0端接收到一个新的中断请求,IRR寄存器被置成如下状态:IRR0000
26、0001(#1号从8259A)经判优线路与正在服务的中断请求IR7比较它具有更高的优先级,应允许它进入系统而被优先处理,于是将#1号从8259A的ISR寄存器置成如下状态:ISR10000001(#1号从8259A)然后将#1号8259A的IRR寄存器复位为全“0”,并通过INT再次向主8259A的IR6端发出请求,由于采用特殊完全嵌套方式,主8259A将允许新的中断请求参加判优,当确定为当前最高优先级时,保持ISR寄存器的状态不变,如下表示:ISR01000000(主8259A)并再次向CPU发出中断请求INT,CPU将暂停执行原来的中断服务程序而转去执行新的更高级的中断请求程序,实现级联方
27、式下的完全嵌套过程。四、8259A芯片的控制字及其工作方式在使用8259A时,除按各引脚规定的信号接好电路外,还必须用程序选定其工作状态,例如,各中断请求信号的优先级分配、中断屏蔽、中断矢量等。每一种状态都由一个命令字或一个命令字中的某些位来规定。8259A的命令字分初始命令字ICW(Initialization Command Word)和工作命令字(Operation Command Word)两种,因此,8259A的编程也分为初始化编程和工作编程两步。在8259A内部,有相应的一组寄存器分别将这些命令字锁存,以控制其工作。1、预置命令字(初始化编程)初始化编程共预置4个命令字ICW1IC
28、W4。初始化编程的功能是:设定中断请求信号的触发方式,即高电平或上升沿触发;设定8259A的连接方式:单片或级联;设定8259A的中断类型码基值,即IR0所对应的中断类型码;设定8259A的中断优先级管理方式;设定中断结束时的处理方式;初始化命令字必须顺序填写,一旦发出就不能改变,工作后一般不再重复写。初始化编程由写入ICW1开始,然后写入ICW2。至于是否写入ICW3和ICW4取决于工作方式(ICW1的有关位)。8259A有两个端口,一个为偶地址(A0=0),一个为奇地址(A0=1)。(1)ICW1芯片控制初始化命令字0IC4S0LTIM1000D0D1D2D3D4D5D6D7A0 1:单片
29、(不要ICW3)0:级连(要ICW3) 1:电平触发0:沿触发特征位地址线的状态8086/8088系统中不用1、设置ICW40、不设置ICW4在地址A0为0时,若对8259A写入一个D4=1的字节,则启动了其初始化编程。写入的这个字节被当成ICW1,D4=1是其特征位,以区别OCW2和OCW3控制字的设置。A0=0,写入命令字的端口地址,ICW1必须写入8259A的偶地址端口,对IBM PC/XT机而言,地址为20H。D7D5和D2这四位仅对8080/8085系统有意义(8086系统中一般填0)。D0=1表示要送ICW4,否则不送。在不送ICW4时,ICW4的各位默认值均为0。D1=0表示系统
30、中有多片8259A级联,否则表示单片工作,此时不送ICW3。D3规定IR7IR0信号的触发方式。D3=1为高电平触发,否则为上升沿触发。写入ICW1时,还自动将中断屏蔽寄存器IMR清零,并恢复各中断源的优先级为IR0最高,IR7最低。(2)ICW2设置中断类型码基值命令字ICW2是中断矢量基值寄存器,用于设置中断类型码的命令字。其形式如下:1D0D1D2D3D4D6D7A0T0T1T2T3T4T5T6T7IR的编码,8259A自 动填入中断类型码的高5位D5A0=1,ICW2必须写入8259A的奇地址端口中。在工作于8086/8088系统中时,D7D3表示中断矢量的高五位。D2D0不需要编程,
31、固定为000,在响应时由中断源序号填入相应值。(3)ICW3标识主片/从片初始化命令字ICW3是8259A的级联命令字,用于主片/从片的初始化命令字。单片8259A工作时不需写入,多片8259A级联时,有主片从片之分,需要分别写入ICW3。主片/从片初始化命令字格式见下图。1D0D1D2D3D4D5D6D7A01D0D1D2D3D4D5D6D7A0主片8259A:从片8259A:S7S6S5S4S3S2S1S0Si = 1 表示主片的IRi接从片Si = 0 表示主片的IRi未接从片00000ID2ID1ID0从片连主片IRi 的序号000 IR0001 IR1111 IR7.A0=1,ICW
32、3必须写入8259A的奇地址端口中。主片ICW3的D7D0对应其八条中断请求线IR7IR0,若某根IR线上接有从8259A片,则ICW3的相应位应写成1,否则写成0。各从片的ICW3仅D2D0有意义,作为其从片标识码,高位固定为0,这个从片标识码须和本片所接主片IR线的序号一致。中断时响应时,主片通过级联线CAS2CAS0送出被允许中断的从片标识码。各从片用自己的ICW3和CAS2CAS0比较,二者一致的从片被确定为当前中断源,才可发送自已的中断矢量。(4)ICW4方式控制初始化命令字ICW4是方式控制初始化命令字,当ICW1中的D0为1时,则在初始化时需要设置ICW4。其格式如下图示。1D0
33、D1D2D3D4D5D6D7A01000SFBFM/SAEOI1:AEOI(自动)0:一般EOI = 非缓冲1 0 =从片缓冲1 1 =主片缓冲1:特殊完全嵌套 0:完全嵌套方式0 ×A0=1,ICW4必须写入8259A的奇地址端口中。D7D5,这3位总为0,用来表示ICW4的标识码。D4指定了中断的嵌套方式。D4=0为一般嵌套方式,当某个中断正在服务时,本级中断及更低级的中断都被屏蔽,只有更高的中断才能响应。对于单片8259A的中断系统,这种安排没有问题。但对多片8259A级联组成的中断系统,当某从片中一个中断正在服务时,主片即将这个从片的所有中断屏蔽。因此即使本从片中有比正在服务
34、的中断级别更高的中断源发出请求,也不能得到响应,即不能中断嵌套。D4=1则是特殊嵌套方式,仅仅屏蔽比当前中断源低级的中断,于是上述情况就可以中断嵌套。D3为数据缓冲选择。D3=1时8259A的数据线和系统总线之间要加上三态缓冲器,此时8259A的SP/EN引脚变成输出线,以作为缓冲器的选通信号。每当8259A的数据送往系统总线时,SP/EN引脚输出有效的低电平。这种情况用于多片8259A的级联,此时主从片的区分就不能再靠SP/EN固定接高或低电平,而用ICW4的D2位。规定主片的D2=1,从片的D2=0。D3=0时不加缓冲器,D2无意义。D1说明了中断结束的方式。D1=0是正常方式,即在中断服
35、务结束时,8259A送一个EOI命令字(OCW2),于是中断服务寄存器ISR中与中断源相对应的位被清除。D1=1是自动EOI方式,即在中断响应时,在8259A送出中断矢量后,自动将ISR相应位复位。D0指定了系统中所用CPU的模式,D0=0时,8080/8085CPU,D0=1时用8086/8088CPU。若在某种应用场合,正好需要ICW4各位都为0,则可以不写ICW4。因为8259A在进入初始化时,已自动将ICW4全部复位。2、8259A的工作编程(操作命令字)8259A在初始化编程后,应再进行工作编程,即写入工作命令字,用于对中断处理过程作动态控制。工作命令字有三个,它们各有自已的特征位,
36、因此写入的顺序没有要求。在中断系统工作中,某些工作命令字可能需要重复多次地写入。(1)OCW1中断屏蔽操作命令字用来实现对中断源的屏蔽功能,OCW1的内容直接写入屏蔽寄存器IMR,OCW1的作用见下图。1A0D7D6D5D4D3D2D1M7M6M5M4M3M2M1M0Mi = 1禁止中断(屏蔽),Mi = 0 允许中断D0A0=1,表示OCW1必须写入8259A的奇地址端口中(三个命令字中只有OCW1占有奇地址)。M7M0对应于中断屏蔽寄存器IMR各位,其每一位控制一根中断请求输入线,屏蔽字为“1”的位,对应的中断请求线被屏蔽;否则,被允许。(在初始化开始时,默认屏蔽字各位全为0)。(2)OC
37、W2优先级循环方式和中断结束方式操作命令字(设置EOI、SEOI、循环,即定义中断结束方式) IR0 IR1 IR70D7D6D5D4D3D2D1D0RSLEOI00L2L1L0000100111.在SL = 1时,指出IRi的最低级特征位001011101111000100110010普通EOI方式特殊EOI方式普通EOI循环方式特殊EOI循环方式自动EOI循环(复位)自动EOI循环(置位)置位优先权命令无效OCW2主要作用是设置中断结束方式。其中A0=0,表示OCW2应写入偶地址端口。D4=D3=0,是OCW2的标志位,它虽然和OCW3都占有偶地址(A0=0),但其特征为D4D3=00,因
38、此不会发生混淆。D7位表示中断优先级循环。当D7=0时,八个中断请求IR7IR0的优先级固定不变,IR7最低,IR0最高。当D7=1时,优先级可以循环,即IR7和IR0首尾相接成一闭环,各级的优先级在其中循环移位。循环到什么情况停止,还与其他位有关。D6位表示特殊循环。当D6=1时,最低三位D2D0的二进制编码指定了一条外部中断请求线IRi。此时若D7=1,则称特殊循环,即优先级的循环移位一直进行到最低优先级对准IRi为止,于是最高优先级也就移到IR(i-1)。D6=0时,最低优先级自动循环到当前服务的中断请求线,D2D0无意义。D5位是中断结束位。D5=1表示中断结束(EOI命令)。当用82
39、59A来实现中断管理时,中断服务程序结束时(返回指令IRET前),必须给8259A送一条EOI命令(即D5=1的OCW2)。8259A收到这条命令后,将中断服务寄存器中的相应位清除,然后才为其他中断源服务。若D6D5=11,则称为特殊的中断结束(SEOI命令),它将复位ISR中由OCW2的D2D0编码指定的位。(3)OCW3特殊屏蔽方式和中断查询方式操作命令字0D7D6D5D4D3D2D1D0RISRRP10SMMESMMA0特征位0×:无效10:特殊屏蔽方式复位11:特殊屏蔽方式置位1:查询8259A状态0:不查询0×:无效11:下次RD有效,读ISR10:下次RD有效,
40、读IRROCW3的作用是写入多功能操作命令字:设置/取消特殊屏蔽方式;设置中断查询方式;设置对8259A内部寄存器的读出命令。A0=0,OCW3必须写入8259A的偶地址端口。D4D3=01。写入OCW3的地址和OCW2相同,但其特征为D4D3=01,以区别OCW2。OCW3经常用来配合读8259A内部寄存器的内容。D1D0=10,则将读入其中断请求寄存器的内容;若D1D0=11,则读入的是中断服务寄存器的状态。OCW3中的D2位表示查询。8259A也可以不工作于中断方式,而工作于查询方式,此时应写入D2=1。CPU可以反复对8259A查询,但每次查询前都应先送一次D2=1的OCW3。OCW3
41、的D6D5用来控制特殊屏蔽功能。当D6D5=11时,设置特殊屏蔽;当D6D5=10时,清除特殊屏蔽。当一个优先级较高的中断源正在服务的过程中,若设置了特殊屏蔽功能,则允许优先级较低的中断源产生中断嵌套。上述操作控制字OCW1OCW3可安排在预置命令字之后,用户可根据需要在程序的任何位置上设置它们,当需要读取ISR或IRR寄存器内容或需要查询当前8259A的中断状态时,都必须先定义OCW3,然后用IN指令读入。如果只需要读IMR寄存器内容,则不需要定义OCW3。所在并不是任何时候都需要设置OCW3操作命令字。3、8259A级联使用的初始化程序举例CSA0INTAD7D0IR7IR6IR5IR4I
42、R3IR2IR1IR0SP/ENCAS0CAS1CAS2从8259AINTCSA0INTAD7D0IR7IR6IR5IR4IR3IR2IR1IR0SP/ENCAS0CAS1CAS2主8259AWRRDWRRD+5VINT外部中断请求外部中断请求8259A级联连接实例某系统中设置两片8259A实现中断控制,它们之间采用级联方式,一片从8259A的INT端与主8259A的IR3端连接,已知当前主8259A的IR0和IR5端上分别引入两个中断请求,从8259A的IR2和IR3端上也分别引入两个中断请求。主8259A:IR0的中断类型号为40H、IR5的中断类型号为45H;IR0和IR5的中断服务程序
43、在同一段中:段基址CS为1000H、段内偏移地址IP分别为1050H和2060H。从8259A:IR2的中断类型号为32H、IR3的中断类型号为33H;IR2和IR3的中断服务程序在同一段中:段基址CS为2000H、段内偏移地址IP分别为5440H和3620H。初始化时,首先应将4个中断入口写入中断入口地址表中。假设已知: 主8259A:端口地址分别为FFE8H和FFE9H 从8259A:端口地址分别为FFFAH和FFFBH分别对主8259A和从8259A初始化如下:主8259A初始化程序MOV AL,11HMOV DX,0FFE8HOUT DX,AL;定义ICW1MOV AL,40HMOV
44、DX,0FFE9HOUT DX,AL;定义ICW2MOV AL,08HOUT DX,AL;定义ICW3MOV AL,11HOUT DX,AL;定义ICW4MOV AL,0D6HOUT DX,AL;定义OCW1MOV AL,20HMOV DX,0FFE8HOUT DX,AL;定义OCW2经过这样初始化的主8259A中断控制器被定义为级联使用方式,中断请求信号IRi采用边沿触发方式;可引入的中断类型码为40H47H;主8259A的IR3端上接有从8259A;采用特殊完全嵌套方式,非自动EOI结束方式,非缓冲方式,由SP=1确定为主8259A;屏蔽掉IR0、IR3和IR5以外的其他中断源;采用普通E
45、OI结束方式。从8259A初始化程序MOV AL,11HMOV DX,0FFFAHOUT DX,AL;定义ICW1MOV AL,30HMOV DX,0FFFBHOUT DX,AL;定义ICW2MOV AL,03HOUT DX,AL;定义ICW3MOV AL,11HOUT DX,AL;定义ICW4MOV AL,0F3HOUT DX,AL;定义OCW1MOV AL,20HMOV DX,0FFFAHOUT DX,AL;定义OCW2经过这样初始化的从8259A中断控制器被定义为级联使用方式,中断请求信号IRi采用边沿触发方式;可引入的中断类型码为30H37H;该从8259A接在主8259A的IR3端上
46、;采用特殊完全嵌套方式,非自动EOI结束方式,非缓冲方式,由SP=0确定为从8259A;屏蔽掉IR2和IR3以外的其他中断源;采用普通EOI结束方式。中断向量装入:将4个中断服务程序的入口地址装入中断向量表中。尽管系统规定了中断向量表的存放区域,但表的内容即入口地址并非系统总是装入的,系统启动时只装前32个,用户开发的服务程序,其入口地址要自己装入向量表中。向量地址的装入方法很多,如绝对地址法装入、使用串指令装入、用DOS功能调用法装入、直接用传送指令装入等,本例用DOS功能调用法。本例中将4个中断服务程序的入口地址装入中断向量表的程序如下:MOV AX,1000H ;送主片的服务程序所在段的
47、段基址MOV DX,AXMOV DX,1050H ;送入偏移地址MOV AL,40H ;中断类型号45H送ALMOV AH,25H ;功能调用号送AHINT 21HMOV DX,2060H ;第二个偏移地址送DXMOV AL,45H ;中断类型号40H送ALINT 21HMOV AX,2000H ;送从片的中断服务程序入口地址的段基址MOV DS,AXMOV DX,5440H ;送入偏移地址MOV AL,32H ;送中断类型号MOV AH,25HINT 21HMOV DX,3620H ;第二个偏移地址MOV AL,33H ;送中断型号INT 21H第二节 可编程计数/定时控制器82538253
48、可编程计数/定时控制器具有3全独立的通道,最高计数速率为2.6MHz,分别称作计数0、计数器1及计数器2。一、8253芯片内部结构8253芯片由数据总线缓冲存储器、读/写控制电路、控制字寄存器及3个计数通道组成。其内部结构如下图示。数据总线缓冲器读 / 写控制逻辑控制寄存器计数器0计数器1计数器2OOOCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D0D7RDWRA0A1CS内部总线1、数据总线缓冲存储器它是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必须之路。2、读/写控制电路接收CPU送入的读/写控制信号,
49、并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。可接收的控制信号如下:(1)A1A0端口选择信号,由CPU输入。8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作,对控制字寄存器进行写操作。这4个端口地址由最低2位地址码A1A0来选择。见下表。A1A0端 口 0 0计数器00 1计数器11 0计数器21 1控制寄存器(2)CS片选信号。由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。(3)RD、WR读/写控制命令,由CPU输入,低电平有效。RD有效时,CPU读取由A1A0所选定的通道内计数
50、器的内容。WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。CPU对8253的读/写操作见下图。CSRDWRA1A0 操作功能01000计数初值装入计数器001001计数初值装入计数器101010计数初值装入计数器201011写控制器寄存器00100读计数器000101读计数器100110读计数器200111无操作1´´´´禁止使用011´´无操作3、通道0通道2内部有3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时,最大计数值是FF
51、FFH,采用BCD码计数时,最大计数值是9999。与此计数器相对应,每个通道内设有一个16位计数值锁存器,必要时可用来锁存计数值。当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中,被计数的事件应以脉冲方式从CLKi端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”,OUTi端将有输出,表示计数次数到。当某通道用作定时器时,由CLKi输入一定频率的时钟脉冲。根据要求定时长短确定所需的计数值,并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”,OUTi将有输出,表示定时时间到。允许从CLKi输入的时钟频率在12MHz范围内。因此,任一通道作计
52、数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数,而后者是由时钟脉冲进行减“1”计数。作计数器时,要求计数的次数可直接作为计数器的初始值预置到减“1”计数器中。作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:除此之外,各通道还可用来产生各种脉冲序列。向各个通道输入的门控信号GATE的作用随各种不同工作方式而不相同。4、控制字寄存器格式见下图,由它来定义8253中各通道的工作方式。(1)写 8253的控制字,写入控制寄存器(A1,A0 = 11)。(2)写入计数值,写到相应的计数器。D0D1D2D3D4D5D6D7(3)计数过程中读计数值。BCDM0M1M2RL0RL1SC0SC1计数值形式0:二进制1:BCD码工作方式选择000:方式0001
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲午战争讲座课程设计
- 离心泵课程设计资料
- fortran有限元程序课程设计
- 美术学生的课程设计
- 数字电路秒表课程设计
- 炼铁课程设计概述
- 电子技术基础的课程设计
- 计算机的大学课程设计
- 绘本课程设计目标
- 2024合同会签及管理办法解析
- 地质勘探中的安全生产考核试卷
- GB/T 22838.5-2024卷烟和滤棒物理性能的测定第5部分:卷烟吸阻和滤棒压降
- 2024年职业病防治考试题库附答案(版)
- 大数据中心建设方案相关两份资料
- 大企业账号运营方案
- 危重孕产妇抢救演练理论考核试题
- 二十届三中全会知识点试题及答案【200题】
- 《养成学习习惯》ppt课件完整版
- 2023《中华人民共和国合同法》
- 三年级上册数学课件-总复习 周长总复习|北师大版
- 小学一年级上册 综合实践教学课件
评论
0/150
提交评论