版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第9章中断控制器、计数章中断控制器、计数/定时控制器及定时控制器及DMA控制器控制器9.1可编程中断控制器可编程中断控制器8259A9.2可编程计数可编程计数/定时控制器定时控制器82539.3可编程可编程DMA控制器控制器8237A9.1 可编程中断控制器可编程中断控制器8259A中断系统是冯中断系统是冯诺依曼结构计算机的一项重要技诺依曼结构计算机的一项重要技术,尤其为解决当前高速运算术,尤其为解决当前高速运算CPU与低速外部与低速外部设备信息交换之间的矛盾。设备信息交换之间的矛盾。8086系列有功能很系列有功能很强的中断系统,它可通过强的中断系统,它可通过8259A可编程中断控可编程中断
2、控制器来实现。制器来实现。 9.1.1 8259A芯片内部结构芯片内部结构 8259A可编程中断控制器包括以下可编程中断控制器包括以下8部分,芯片部分,芯片内部结构如图内部结构如图9.1所示。所示。8259A芯片有芯片有28条引脚,条引脚,双列直插式封装,各引脚的信号功能如图双列直插式封装,各引脚的信号功能如图9.2所所示。示。图图9.1图图9.21. 数据总线缓冲器数据总线缓冲器这是一个双向这是一个双向8位位3态缓冲器,由它构成态缓冲器,由它构成8259A与与CPU之间的数据接口,是之间的数据接口,是8259A与与CPU交换数据的必经交换数据的必经之路。之路。2. 读读/写控制电路写控制电路
3、用来接收来自用来接收来自CPU的读的读/写控制命令和片选控制信息。写控制命令和片选控制信息。由于一片由于一片8259A只占两个只占两个I/O端口地址,可用末位端口地址,可用末位地址码地址码A0来选端口,端口的其他高位地址作为片选来选端口,端口的其他高位地址作为片选信号信号CS输入。当输入。当CPU执行执行OUT指令时,指令时,WR信号信号与与A0配合,将配合,将CPU通过数据总线通过数据总线(D7D0)送来的控送来的控制字写入制字写入8259A中有关的控制寄存器。中有关的控制寄存器。当当CPU执行执行IN指令时,指令时,RD信号与信号与A0配合,将配合,将8259A中内部寄存器内容通过数据总线
4、中内部寄存器内容通过数据总线(70)传送给传送给CPU。3. 级联缓冲级联缓冲/比较器比较器一片一片8259A只能接收八级中断从只能接收八级中断从IR7IR0输入,当引输入,当引入的中断超过入的中断超过8级时,可用多片级时,可用多片8259A级联使用,级联使用,构成主从关系,对于主构成主从关系,对于主8259A,级联信号,级联信号CAS2CAS0是输出信号,对于从是输出信号,对于从8259A,CAS2CAS0是是输入信号。输入信号。SP/EN是一个双功能信号,当是一个双功能信号,当8259A处处于缓冲状态时,于缓冲状态时,EN有效,表示允许有效,表示允许8259A通过缓冲通过缓冲存储器输出;存
5、储器输出;EN无效,表示无效,表示CPU写写8259A。当。当8259A处于非缓冲状态时,处于非缓冲状态时,SP用作表明主从关系,用作表明主从关系,SP=1表示是主表示是主8259A,SP=0表示是从表示是从8259A。4. 中断请求寄存器中断请求寄存器IRR这是一个这是一个8位寄存器,用来存放由外部输入的中断请位寄存器,用来存放由外部输入的中断请求信号求信号IR7IR0。当某一个。当某一个IRi端呈现高电平时,端呈现高电平时,该寄存器的相应位置该寄存器的相应位置“1”,显然最多允许,显然最多允许8个中断个中断请求信号同时进入,这时,请求信号同时进入,这时,IRR寄存器将被置成全寄存器将被置成
6、全“1”。5. 中断服务寄存器中断服务寄存器ISR这是一个这是一个8位寄存器,用来记录正在处理中的中断请位寄存器,用来记录正在处理中的中断请求。当任何一级中断被响应,求。当任何一级中断被响应,CPU正在执行它的中正在执行它的中断服务程序时,断服务程序时,ISR寄存器中相应位置寄存器中相应位置“1”,一直,一直保持到该级中断处理过程结束为止。多重中断情况保持到该级中断处理过程结束为止。多重中断情况下,下,ISR寄存器中可有多位被同时置寄存器中可有多位被同时置“1”。6. 中断屏蔽寄存器中断屏蔽寄存器IMR这是一个这是一个8位寄存器,用来存放对各级中断请求的屏位寄存器,用来存放对各级中断请求的屏蔽
7、信息。当该寄存器中某一位置蔽信息。当该寄存器中某一位置“1”时,表示禁止时,表示禁止这一级中断请求进入系统,通过这一级中断请求进入系统,通过IMR寄存器可实现寄存器可实现对各级中断的有选择的屏蔽。对各级中断的有选择的屏蔽。7. 优先权判别器优先权判别器PR用来识别各中断请求信号的优先级别。当多个中断用来识别各中断请求信号的优先级别。当多个中断请求信号同时产生时,由请求信号同时产生时,由PR判定当前哪一个中断判定当前哪一个中断请求具有最高优先级,于是系统首先响应这一级中请求具有最高优先级,于是系统首先响应这一级中断,转去执行相应的中断服务程序。当出现多重中断,转去执行相应的中断服务程序。当出现多
8、重中断时,由断时,由PR判定是否允许所出现的中断去打断正判定是否允许所出现的中断去打断正在处理的中断而被优先处理。一般处理原则是允许在处理的中断而被优先处理。一般处理原则是允许高级中断打断低级中断,而不允许低级中断打断高高级中断打断低级中断,而不允许低级中断打断高级中断,也不允许同级中断互相打断。级中断,也不允许同级中断互相打断。8. 控制电路控制电路它是它是8259A内部的控制器。根据中断请求寄存器内部的控制器。根据中断请求寄存器IRR的置位情况和优先权判别器的置位情况和优先权判别器PR的判定结果,向的判定结果,向8259A内部其他部件发出控制信号,并向内部其他部件发出控制信号,并向CPU发
9、出发出中断请求信号中断请求信号INT和接收来自和接收来自CPU的中断响应信号的中断响应信号INTA,控制,控制8259A进入中断服务状态。实际上进入中断服务状态。实际上8259A芯片是在控制电路控制之下构成一个有机的芯片是在控制电路控制之下构成一个有机的整体。整体。9.1.2 8259A芯片的工作方式芯片的工作方式8259A有两种中断触发方式:电平触发方式和边沿触有两种中断触发方式:电平触发方式和边沿触发方式,可由软件来定义。当定义为电平触发方发方式,可由软件来定义。当定义为电平触发方式时,从式时,从IR7IR0输入的有效信号应为高电平,而输入的有效信号应为高电平,而且必须保持有效到响应它的第
10、一个且必须保持有效到响应它的第一个INTA信号的前沿,信号的前沿,否则这个否则这个IRi信号有可能被丢失;但是也不允许信号有可能被丢失;但是也不允许IRi信号太长,如果在中断服务寄存器信号太长,如果在中断服务寄存器ISR相应位复位相应位复位后该后该IRi信号还继续有效,则信号还继续有效,则8259A就可能重新响就可能重新响应这一中断请求而出现重复中断现象。为避免这应这一中断请求而出现重复中断现象。为避免这种情况产生,在种情况产生,在ISR某一位被复位时应将相应的某一位被复位时应将相应的IRi信号置成无效。信号置成无效。采用这种电平触发方式还有一个问题必须注意,即如采用这种电平触发方式还有一个问
11、题必须注意,即如果通过一个果通过一个IRi端引入多个中断请求,它们由软件进端引入多个中断请求,它们由软件进行排队;那么当这个行排队;那么当这个IRi端上一个中断请求的有效期端上一个中断请求的有效期间,另一个中断请求又产生时,将有可能丢失第间,另一个中断请求又产生时,将有可能丢失第2个个中断请求信号,从这个意义上讲是不允许发生中断中断请求信号,从这个意义上讲是不允许发生中断请求的电平信号持续时间太长,但也不能太短,这请求的电平信号持续时间太长,但也不能太短,这在使用中必须注意。在使用中必须注意。当当8259A被定义为边沿触发方式时,不会产生上述的被定义为边沿触发方式时,不会产生上述的丢失中断请求
12、的现象,这时当丢失中断请求的现象,这时当IRi端上出现由低电平端上出现由低电平到高电平的正跳变时,表示中断请求信号有效,最到高电平的正跳变时,表示中断请求信号有效,最好用负脉冲的后沿来实现。采用这种边沿触发方式好用负脉冲的后沿来实现。采用这种边沿触发方式不会出现重复中断现象,但是也要求在响应某中断不会出现重复中断现象,但是也要求在响应某中断请求的第请求的第1个个INTA信号有效前不要出现下一个中断信号有效前不要出现下一个中断请求,否则有可能丢失前面一个中断请求。请求,否则有可能丢失前面一个中断请求。图图9.3不管是采用什么方式引入的中断,在中断响应周不管是采用什么方式引入的中断,在中断响应周期
13、内第期内第2个个INTA信号有效期间信号有效期间8259A应将当前被响应将当前被响应的中断类型码应的中断类型码n通过数据总线通过数据总线D7D0传送给传送给CPU。8259A中一字节中断类型码的形成如图中一字节中断类型码的形成如图9.3所示。所示。从图中可看出,由一片从图中可看出,由一片8259A引入的引入的8级中断请求的类型码级中断请求的类型码肯定是连续的。它们在中断入口地址表中的位置取决于肯定是连续的。它们在中断入口地址表中的位置取决于由软件定义的由软件定义的D7D3位的状态,并由对位的状态,并由对8259A进行初始进行初始化时写入的相应控制字来确定。例如,定义化时写入的相应控制字来确定。
14、例如,定义D7D3=10001时,则该时,则该8级中断的类型码将顺序为级中断的类型码将顺序为88H8FH。 8259A具有非常灵活的中断管理方式,可满足使用者的各具有非常灵活的中断管理方式,可满足使用者的各种不同要求。而中断优先权管理是中断管理的核心问题。种不同要求。而中断优先权管理是中断管理的核心问题。8259A可采用优先权级别固定分配和循环设置两种方式。可采用优先权级别固定分配和循环设置两种方式。各中断源的优先级确定后,一般处理原则只允许高级中各中断源的优先级确定后,一般处理原则只允许高级中断打断低级中断而被优先处理,禁止低级打断高级或同断打断低级中断而被优先处理,禁止低级打断高级或同级中
15、断相互打断。级中断相互打断。8259A中对中断优先权的管理,可概括为完全嵌套方式、中对中断优先权的管理,可概括为完全嵌套方式、自动循环方式和中断屏蔽方式。详细讲解如下:自动循环方式和中断屏蔽方式。详细讲解如下:1. 完全嵌套方式完全嵌套方式完全嵌套方式是完全嵌套方式是8259A被初始化后自动进入的基本工被初始化后自动进入的基本工作方式,在这种方式下,由各个作方式,在这种方式下,由各个IRi端引入的中断端引入的中断请求具有固定的中断级别。请求具有固定的中断级别。IR0具有最高优先级,具有最高优先级,IR7具有最低优先级,其他级顺序类推。具有最低优先级,其他级顺序类推。采用完全嵌套方式时,采用完全
16、嵌套方式时,ISR寄存器中某位置寄存器中某位置“1”,表,表示示CPU当前正在处理这一级中断请求,当前正在处理这一级中断请求,8259A将允将允许比它级别高的中断请求进入,打断当前的中断服许比它级别高的中断请求进入,打断当前的中断服务程序而被优先处理,但禁止与它同级或比它级别务程序而被优先处理,但禁止与它同级或比它级别低的其他中断请求进入。采用这种完全嵌套方式,低的其他中断请求进入。采用这种完全嵌套方式,中断嵌套的深度取决于整个中断系统所具有的中断中断嵌套的深度取决于整个中断系统所具有的中断级数,在一个具有级数,在一个具有8级中断的系统中,最大的中断级中断的系统中,最大的中断嵌套深度为嵌套深度
17、为8,如图,如图9.4所示。所示。图图9.4在中断嵌套过程中,中断服务寄存器在中断嵌套过程中,中断服务寄存器ISR的内容将不的内容将不断变化,最后有可能使断变化,最后有可能使(ISR)FFH,表示当前有,表示当前有8级中断请求正在被服务,首先结束的应是最高级的级中断请求正在被服务,首先结束的应是最高级的中断,待中断,待CPU由高级到低级将全部中断处理结束返由高级到低级将全部中断处理结束返回到主程序时,回到主程序时,ISR寄存器将重新复位为全寄存器将重新复位为全“0”。这种情况下要求堆栈的容量比较大。因为每响应一这种情况下要求堆栈的容量比较大。因为每响应一次中断至少要往堆栈压入次中断至少要往堆栈
18、压入6个字节的信息个字节的信息(两个字节两个字节标志寄存器内容和标志寄存器内容和4个字节的断点地址个字节的断点地址),在各级中,在各级中断处理过程中,还有可能要将其他资源压入堆栈保断处理过程中,还有可能要将其他资源压入堆栈保护。除此之外,在上述中断嵌套过程中,还要求护。除此之外,在上述中断嵌套过程中,还要求CPU每响应一次中断进入中断服务程序后,应安排每响应一次中断进入中断服务程序后,应安排开中断指令开中断指令(STI)将将IF标志位置标志位置“1”,否则由,否则由8259A引入的高级中断将无法进入系统。当任何一级中断引入的高级中断将无法进入系统。当任何一级中断处理完毕,处理完毕,CPU应向应
19、向8259A回送结束命令回送结束命令(EOI),以便,以便8259A将将ISR寄存器中相应位清寄存器中相应位清“0”,标志一级中断处理过程完全结束。标志一级中断处理过程完全结束。8259A在完全嵌套方式下,可采用以下在完全嵌套方式下,可采用以下3种中断结束种中断结束方式:方式:(1) 普通普通EOI方式:方式: 当任何一级中断服务程序结束时,当任何一级中断服务程序结束时,只给只给8259A传送一个传送一个EOI结束命令,结束命令,8259A收到这收到这个个EOI命令后,自动将命令后,自动将ISR寄存器中级别最高的置寄存器中级别最高的置“1”位清位清“0”。这种结束方式最简单,但是只有当。这种结
20、束方式最简单,但是只有当前结束的中断总是尚未处理完的级别最高的中断时,前结束的中断总是尚未处理完的级别最高的中断时,才能使用这种结束方式。这就是说,如果在中断服才能使用这种结束方式。这就是说,如果在中断服务程序中曾经修改过中断级别,则决不能采用这种务程序中曾经修改过中断级别,则决不能采用这种方式,否则会造成严重后果。方式,否则会造成严重后果。(2) 特殊特殊EOI方式:方式: 在普通在普通EOI方式的基础上,当中方式的基础上,当中断服务程序结束给断服务程序结束给8259A发出发出EOI命令的同时,将命令的同时,将当前结束的中断级别也传送给当前结束的中断级别也传送给8259A,就被称作特,就被称
21、作特殊殊EOI方式。这种情况下,方式。这种情况下,8259A将将ISR寄存器中寄存器中指定级别的相应位清指定级别的相应位清“0”,显然这种结束方式可在,显然这种结束方式可在任何情况下使用。任何情况下使用。(3) 自动自动EOI方式:方式: 任何一级中断被响应后,任何一级中断被响应后,ISR寄寄存器中相应位置存器中相应位置“1”,CPU将进入中断响应总线周将进入中断响应总线周期,在第期,在第2个中断响应信号个中断响应信号(INTA)结束时,自动将结束时,自动将ISR寄存器中相应位清寄存器中相应位清“0”,被称作自动,被称作自动EOI方式。方式。采用这种结束方式,当中断服务程序结束时,采用这种结束
22、方式,当中断服务程序结束时,CPU不用向不用向8259A回送任何信息,这显然是一种最简单回送任何信息,这显然是一种最简单的结束方式。但是存在一个明显的缺点,任何的结束方式。但是存在一个明显的缺点,任何一级中断在执行中断服务程序期间,在一级中断在执行中断服务程序期间,在8259A中没中没有留下任何标志,如果在此过程中出现了新的中断有留下任何标志,如果在此过程中出现了新的中断请求,则只要当前请求,则只要当前IF=1,不管新出现的中断级别如,不管新出现的中断级别如何,都将打断正在执行的中断服务程序而被优先执何,都将打断正在执行的中断服务程序而被优先执行,这就有可能出现低级中断打断高级中断或同级行,这
23、就有可能出现低级中断打断高级中断或同级中断相互打断的不合理现象,通常将这种情况称作中断相互打断的不合理现象,通常将这种情况称作“重复嵌套重复嵌套”,重复嵌套的深度无法控制,很可能,重复嵌套的深度无法控制,很可能造成某些高级中断得不到及时处理的情况,这显然造成某些高级中断得不到及时处理的情况,这显然是不允许的,因此使用自动是不允许的,因此使用自动EOI方式一定要特别小方式一定要特别小心。对于一些以预定的速率发生的中断,在肯定不心。对于一些以预定的速率发生的中断,在肯定不会产生重复嵌套的情况下,采用自动会产生重复嵌套的情况下,采用自动EOI方式是最方式是最理想的。理想的。2. 自动循环方式自动循环
24、方式上述完全嵌套方式中,中断请求上述完全嵌套方式中,中断请求IR7IR0的优先级别的优先级别是固定不变的,使得从是固定不变的,使得从IR0引入的中断总是具有最引入的中断总是具有最高的优先级,其他任何中断都有可能被它打断,却高的优先级,其他任何中断都有可能被它打断,却无法打断它。实际上很可能出现由无法打断它。实际上很可能出现由IR0IR7引入的引入的各级中断的重要性差别不大的情况,所以,希望它各级中断的重要性差别不大的情况,所以,希望它们的中断级别不是固定不变的,而是可以以某种策们的中断级别不是固定不变的,而是可以以某种策略改变它们的优先级别。自动循环方式是改变中断略改变它们的优先级别。自动循环
25、方式是改变中断请求优先级别的策略之一,其基本思想是:每当任请求优先级别的策略之一,其基本思想是:每当任何一级中断被处理完,它的优先级别就被改变为最何一级中断被处理完,它的优先级别就被改变为最低级,而将最高优先级赋给原来比它低一级的中断低级,而将最高优先级赋给原来比它低一级的中断请求。请求。实现自动循环方式有下面实现自动循环方式有下面3种不同的做法:种不同的做法:(1) 普通普通EOI循环方式:循环方式: 当任何一级中断被处理完后,当任何一级中断被处理完后,CPU给给8259A回送普通回送普通EOI命令,命令,8259A接收到这一命令后将接收到这一命令后将ISR寄存器中优先级最高的置寄存器中优先
26、级最高的置“1”位清位清“0”,并赋给它最,并赋给它最低优先级,而将最高优先级赋给原来比它低一级的中断低优先级,而将最高优先级赋给原来比它低一级的中断请求,其他中断请求的优先级别以循环方式类推。例如,请求,其他中断请求的优先级别以循环方式类推。例如,某系统中原来定义的是某系统中原来定义的是IR0为最高级,为最高级,IR7为最低级,当为最低级,当前正在处理前正在处理IR2和和IR6引入的中断请求,因此,引入的中断请求,因此,ISR寄存器寄存器中第中第2位和第位和第6位置位置“1”,待第,待第2级中断处理完,级中断处理完,CPU向向8259A回送普通回送普通EOI命令,命令,8259A将将ISR寄
27、存器中级别高寄存器中级别高的第的第2位清位清“0”,并将其优先级由原定义的第,并将其优先级由原定义的第2级改变为级改变为最低级最低级(第第7级级),而将最高级,而将最高级(第第0级级)赋给原来的第赋给原来的第3级级(ISR3),其他级的优先权按循环方式依次改变为新的级别。,其他级的优先权按循环方式依次改变为新的级别。待原来的待原来的6级中断处理完后,同样在普通级中断处理完后,同样在普通EOI命令控制下,命令控制下,将将ISR中的第中的第6位清位清“0”,并将其优先级由第,并将其优先级由第3级改变为最级改变为最低级,而将最高级赋给由低级,而将最高级赋给由ISR7所对应的中断请求。所对应的中断请求
28、。(2) 自动自动EOI循环方式:任何一级中断响应后,在中循环方式:任何一级中断响应后,在中断响应总线周期中,由第断响应总线周期中,由第2个中断响应信号个中断响应信号 INTA 的后沿自动将的后沿自动将ISR寄存器中相应位清寄存器中相应位清“0”,并立即,并立即改变各级中断的优先级别,改变方案与上述普通改变各级中断的优先级别,改变方案与上述普通EOI循环方式相同。循环方式相同。采用这种自动采用这种自动EOI循环方式与前述的自动循环方式与前述的自动EOI方式一方式一样,有可能出现样,有可能出现“重复嵌套重复嵌套”现象,使用中要特别现象,使用中要特别小心,否则有可能造成严重后果。小心,否则有可能造
29、成严重后果。(3) 特殊特殊EOI循环方式:循环方式: 前述的普通前述的普通EOI循环和自动循环和自动EOI循环都是将最低优先权赋给刚刚处理完的中断循环都是将最低优先权赋给刚刚处理完的中断请求。特殊请求。特殊EOI循环方式具有更大的灵活性,它可循环方式具有更大的灵活性,它可根据用户要求将最低优先级赋给指定的中断源。用根据用户要求将最低优先级赋给指定的中断源。用户可在主程序或中断服务程序中利用置位优先权命户可在主程序或中断服务程序中利用置位优先权命令把最低优先级赋给某一中断源令把最低优先级赋给某一中断源IRi,于是最高优,于是最高优先级便赋给先级便赋给IRi+1,其他各级按循环方式类推。例如,其
30、他各级按循环方式类推。例如,在某一时刻,在某一时刻,8259A中的中的ISR寄存器的第寄存器的第2位和第位和第6位置位置“1”,表示当前,表示当前CPU正在处理第正在处理第2级和第级和第6级中级中断。它们以嵌套方式引入系统,如果当前断。它们以嵌套方式引入系统,如果当前CPU正在正在执行优先级高的第执行优先级高的第2级中断服务程序,用户在该中级中断服务程序,用户在该中断服务程序中安排了一条优先权置位指令,将最低断服务程序中安排了一条优先权置位指令,将最低级优先权赋给级优先权赋给IR4,那么待这条指令执行完毕,各,那么待这条指令执行完毕,各中断源的优先级便发生变化,中断源的优先级便发生变化,IR4
31、具有最低优先级,具有最低优先级,IR5则具有最高优先级,但这时第则具有最高优先级,但这时第2级中断服务程序级中断服务程序并没有结束,因此,并没有结束,因此,ISR寄存器中仍保持第寄存器中仍保持第2位和位和第第6位置位置“1”,只是它们的优先级别已经分别被改,只是它们的优先级别已经分别被改变为第变为第5级和第级和第1级。级。显然,使用了置位优先权指令后,正在处理的中断显然,使用了置位优先权指令后,正在处理的中断不一定在尚未处理完的中断中具有最高优先级。上不一定在尚未处理完的中断中具有最高优先级。上例中,原来优先级高的第例中,原来优先级高的第2级现在变成了第级现在变成了第5级,而级,而原来的第原来
32、的第6级现在上升为第级现在上升为第1级。这种情况下当第级。这种情况下当第2级中断服务程序结束时,不能使用普通级中断服务程序结束时,不能使用普通EOI方式,方式,而必须使用特殊而必须使用特殊EOI方式,就是说向方式,就是说向8259A发送发送IR结束命令的同时,还应将结束命令的同时,还应将IR2的当前级别的当前级别(第第5级级)传送给传送给8259A,8259A才能正确地将才能正确地将ISR寄存器中的寄存器中的第第2位清位清“0”。3. 中断屏蔽方式中断屏蔽方式对中断优先级的管理还可采用中断屏蔽方式,对中断优先级的管理还可采用中断屏蔽方式,CPU在任何时候都可安排一条清除中断标志指令在任何时候都
33、可安排一条清除中断标志指令(CLI),将中断标志位清将中断标志位清“0”,从此以后,从此以后,CPU将禁止所有将禁止所有的由的由INTR端引入的可屏蔽中断请求。这是由端引入的可屏蔽中断请求。这是由CPU自己完成的中断屏蔽功能,它只能对所有的可屏蔽自己完成的中断屏蔽功能,它只能对所有的可屏蔽中断一起进行屏蔽,而无法有选择地对某一级或几中断一起进行屏蔽,而无法有选择地对某一级或几级中断进行屏蔽。这种屏蔽操作可由级中断进行屏蔽。这种屏蔽操作可由8259A通过中通过中断屏蔽寄存器来实现,有两种实现方式:断屏蔽寄存器来实现,有两种实现方式:(1) 普通屏蔽方式:普通屏蔽方式: 将中断屏蔽寄存器将中断屏蔽
34、寄存器IMR中的某一中的某一位或某几位置位或某几位置“1”,即可将相应级的中断请求屏蔽,即可将相应级的中断请求屏蔽掉。这种屏蔽方式可在两种情况下使用。其一是当掉。这种屏蔽方式可在两种情况下使用。其一是当CPU在执行主程序时,要求禁止响应某级或某几级在执行主程序时,要求禁止响应某级或某几级中断时,可在主程序中将中断时,可在主程序中将IMR寄存器的相应位置寄存器的相应位置“1”;其二是;其二是CPU在处理某级中断过程中,要求禁在处理某级中断过程中,要求禁止级别比它高的某一级或某几级中断时,可在中断止级别比它高的某一级或某几级中断时,可在中断服务程序中将服务程序中将IMR寄存器的相应位置寄存器的相应
35、位置“1”,这样所,这样所实现的称作普通屏蔽方式。实现的称作普通屏蔽方式。(2) 特殊屏蔽方式:特殊屏蔽方式: 当当CPU正在处理某级中断时,要正在处理某级中断时,要求仅对本级中断进行屏蔽,而允许其他优先级比它求仅对本级中断进行屏蔽,而允许其他优先级比它高或低的中断进入系统,这被称作特殊屏蔽方式。高或低的中断进入系统,这被称作特殊屏蔽方式。对对8259A进行初始化时,可利用控制寄存器的进行初始化时,可利用控制寄存器的SMM位的置位来使位的置位来使8259A进入这种特殊屏蔽方式。进入这种特殊屏蔽方式。例如,若当前正在执行例如,若当前正在执行IR3的中断服务程序,希望的中断服务程序,希望进入特殊屏
36、蔽方式时,只需在进入特殊屏蔽方式时,只需在STI指令后,将指令后,将IMR寄存器的第寄存器的第3位置位置“1”,并将控制寄存器的,并将控制寄存器的SMM位位置置“1”,标志,标志8259A已进入特殊屏蔽方式。此后,已进入特殊屏蔽方式。此后,除除IR3之外,其他任何级的中断均可进入,待之外,其他任何级的中断均可进入,待IR3的的中断服务程序结束时,应将中断服务程序结束时,应将IMR寄存器的第寄存器的第3位复位复位,并将位,并将SMM位复位,标志退出特殊屏蔽方式,位复位,标志退出特殊屏蔽方式,然后利用特殊然后利用特殊EOI方式,由方式,由8259A将将ISR寄存器的寄存器的第第3位清位清“0”。9
37、.1.3 8259A芯片的级联使用芯片的级联使用一片一片8259A芯片只能管理芯片只能管理8级中断,在多于级中断,在多于8级中级中断的系统中,必须将多片断的系统中,必须将多片8259A级联使用。级联使用。最简单的级联方式为两级,第最简单的级联方式为两级,第1级只需一片级只需一片8259A用作主片,第用作主片,第2级可接级可接18片片8259A用作从片,用作从片,如图如图9.5所示。所示。图图9.5两级级联情况下可管理的中断源最多为两级级联情况下可管理的中断源最多为64级,如果级,如果还要增多中断源数量,可进一步扩展为多级级联。还要增多中断源数量,可进一步扩展为多级级联。8259A级联使用时,主
38、级联使用时,主8259A上没有连接从上没有连接从8259A的的IRi端,可直接与中断源相连。这种方式下,对端,可直接与中断源相连。这种方式下,对8259A初始化时,应使用支持级联方式的控制字进初始化时,应使用支持级联方式的控制字进行定义。在行定义。在8259A级联系统中,某一片从级联系统中,某一片从8259A的的IRi端接收到一个或多个中断请求信号时,经过判端接收到一个或多个中断请求信号时,经过判优可确定当前的最高级中断得到响应,并通过优可确定当前的最高级中断得到响应,并通过INT向主向主8259A发出请求;经主发出请求;经主8259A再次判优确认是再次判优确认是当前最高级中断时,向当前最高级
39、中断时,向CPU发出中断请求信号发出中断请求信号INT,以后的过程与单级使用时类似。对以后的过程与单级使用时类似。对CPU来说,来说,8259A的单级使用和级联使用区别不大。的单级使用和级联使用区别不大。8259A在级联使用方式下的中断响应总线周期时序图在级联使用方式下的中断响应总线周期时序图如图如图9.6所示。第所示。第1个个INTA有效时,主有效时,主8259A将级联将级联地址从地址从CAS2CAS0 3端输出给所有的从端输出给所有的从8259A芯片,芯片,到第到第2个个INTA有效时,与主有效时,与主8259A发出的级联地址发出的级联地址相符的从相符的从8259A将向将向CPU送出当前的
40、中断类型码送出当前的中断类型码n,以后的操作过程与单级使用时相同。以后的操作过程与单级使用时相同。图图9.6当从当从8259A引入的中断处理过程结束时,引入的中断处理过程结束时,CPU应能送应能送出两个出两个EOI结束命令,一个送给主结束命令,一个送给主8259A,用来将,用来将主主8259A中的中的ISR寄存器的相应位清寄存器的相应位清“0”;另一个;另一个送给从送给从8259A,用来将从,用来将从8259A中的中的ISR寄存器相应寄存器相应位清位清“0”,才标志一次中断处理过程的结束。,才标志一次中断处理过程的结束。某系统中某系统中8086 CPU工作在最小模式,中断系统由一工作在最小模式
41、,中断系统由一片主片主8259A、2片从片从8259A构成级联方式工作,其系构成级联方式工作,其系统连接如图统连接如图9.7所示。所示。图图9.7整个系统最多可引入整个系统最多可引入22级中断请求信号,级中断请求信号,1从从8259A引入的引入的8级中断通过主级中断通过主8259A的的IR6端引入,端引入,2从从8259A引入的引入的8级中断通过主级中断通过主8259A的的IR4端引端引入,主入,主8259A上其他的上其他的6个个IRi端可直接引入其他中端可直接引入其他中断请求。如果初始化时将它们定义为完全嵌套方式,断请求。如果初始化时将它们定义为完全嵌套方式,意味着意味着2从从8259A引入
42、的中断请求优先级别高于引入的中断请求优先级别高于1从从8259A引入的中断请求,它们由主引入的中断请求,它们由主8259A完成完成判优功能后才能引入系统。判优功能后才能引入系统。假定在某一时刻,假定在某一时刻,1从从8259A的的IR7端接收到一个中端接收到一个中断请求,经断请求,经1从从8259A判优后决定响应这一中断判优后决定响应这一中断请求,将请求,将ISR寄存器中第寄存器中第7位置位置“1”,于是通过,于是通过INT向主向主8259A的的IR6端发出请求,经主端发出请求,经主8259A再次判优,再次判优,决定响应这一请求时,才将主决定响应这一请求时,才将主8259A中中ISR寄存器的第
43、寄存器的第6位置位置“1”,CPU将从中断入口地将从中断入口地址表中得到相应的入口地址,转去执行中断服务程址表中得到相应的入口地址,转去执行中断服务程序。如果在执行该中断服务程序过程中,序。如果在执行该中断服务程序过程中,1从从8259A的的IR0端接收到一个新的中断请求。根据中端接收到一个新的中断请求。根据中断嵌套原则,在断嵌套原则,在1从从8259A中中IR0优先级别高于优先级别高于IR7,应该允许新的中断请求进入,将应该允许新的中断请求进入,将ISR寄存器中第寄存器中第0位置位置“1”,并通过,并通过INT向主向主8259A的的IR6端再次发出端再次发出请求。但这时由于主请求。但这时由于
44、主8259A中中ISR寄存器的第寄存器的第6位早位早已置已置“1”,不允许这一级中断再进入,这便造成,不允许这一级中断再进入,这便造成1从从8259A不能按完全嵌套方式工作,这显然是不不能按完全嵌套方式工作,这显然是不合理的。为此,需要采取特殊措施来解决这个问题。合理的。为此,需要采取特殊措施来解决这个问题。一种可取的方式被称作特殊完全嵌套方式,它只在一种可取的方式被称作特殊完全嵌套方式,它只在级联方式下有效。当中断系统工作在级联方式,对级联方式下有效。当中断系统工作在级联方式,对主主8259A初始化时,应将它定义为特殊完全嵌套方初始化时,应将它定义为特殊完全嵌套方式。式。采用特殊完全嵌套方式
45、的中断级联系统中,任一个采用特殊完全嵌套方式的中断级联系统中,任一个从从8259A接收到一个中断请求经判优确定为当前最接收到一个中断请求经判优确定为当前最高优先级应该响应这一中断请求时,立即通过高优先级应该响应这一中断请求时,立即通过INT端向主端向主8259的相应的相应IRi端提出请求。如果这时主端提出请求。如果这时主8259A中中ISR寄存器的相应位已经置寄存器的相应位已经置“1”,说明当,说明当前在同一个从前在同一个从8259A中接收到了比原先更高级的中中接收到了比原先更高级的中断请求,主断请求,主8259A应允许它进入;只要它是当前主应允许它进入;只要它是当前主8259A中最高级的中断
46、请求,就应通过中最高级的中断请求,就应通过INT向向CPU发出新的中断请求,发出新的中断请求,CPU将打断原来的中断服务程将打断原来的中断服务程序而优先处理这一中断请求,转去执行相应的中断序而优先处理这一中断请求,转去执行相应的中断服务程序,以保证任一从服务程序,以保证任一从8259A控制器能按完全嵌控制器能按完全嵌套方式正常操作。套方式正常操作。上述情况下,当上述情况下,当1号从号从8259A从从IR7端接收到中断请端接收到中断请求时,中断请求寄存器求时,中断请求寄存器IRR将被置成如下状态:将被置成如下状态: 7 0IRR10000000(#1号从号从8259A)经判优线路确定为当前经判优
47、线路确定为当前#1号从号从8259A中最高优先级时,中最高优先级时,将将ISR寄存器置成如下状态:寄存器置成如下状态:7 0 ISR10000000(#1号从号从8259A)然后将然后将IRR寄存器复位为全寄存器复位为全“0”,并通过,并通过INT向主向主8259A的的IR6端发出请求,将主端发出请求,将主8259A中的中的IRR寄存寄存器置成如下状态:器置成如下状态:7 0IRR01000000(主主8259A)经主经主8259A判优确定为当前主判优确定为当前主8259A中最高优先级时,中最高优先级时,将将ISR寄存器置成如下状态:寄存器置成如下状态:7 0 ISR01000000(主主82
48、59A)然后将然后将IRR寄存器复位为全寄存器复位为全“0”,并通过,并通过INT向向CPU发出中断请求信号发出中断请求信号INTR。待待CPU执行完当前指令访问到执行完当前指令访问到INTR有效时暂停执行有效时暂停执行下条指令进入中断响应总线周期,获得中断类型码下条指令进入中断响应总线周期,获得中断类型码后,可转去执行相应中断服务程序。后,可转去执行相应中断服务程序。在在CPU执行上述中断服务程序过程中执行上述中断服务程序过程中#1从从8259A从从IR0端接收到一个新的中断请求,端接收到一个新的中断请求,IRR寄存器被置寄存器被置成如下状态:成如下状态:7 0 ISR00000001(#1
49、号从号从8259A)经判优线路与正在服务的中断请求经判优线路与正在服务的中断请求IR7比较它具有更比较它具有更高的优先级,应允许它进入系统而被优先处理,于高的优先级,应允许它进入系统而被优先处理,于是将是将ISR寄存器置成如下状态:寄存器置成如下状态:7 0 ISR10000001(#1号从号从8259A)然后将然后将IRR寄存器复位为全寄存器复位为全“0”,并通过,并通过INT再次向再次向主主8259A的的IR6端发出请求,由于采用特殊完全嵌端发出请求,由于采用特殊完全嵌套方式,主套方式,主8259A将允许新的中断请求参加判优,将允许新的中断请求参加判优,当确定为当前最高优先级时,保持当确定
50、为当前最高优先级时,保持ISR寄存器的状寄存器的状态不变,如下所示:态不变,如下所示:7 0 ISR01000000(主主8259A)并再次向并再次向CPU发出中断请求发出中断请求INT,CPU将暂停执行原将暂停执行原来的中断服务程序而转去执行新的更高级的中断服来的中断服务程序而转去执行新的更高级的中断服务程序,实现在级联方式下的完全嵌套过程。务程序,实现在级联方式下的完全嵌套过程。9.1.4 8259A芯片的控制字及其工作方式芯片的控制字及其工作方式可编程中断控制器可编程中断控制器8259A的初始化操作可明确地分成的初始化操作可明确地分成两个部分,首先要通过预置命令字两个部分,首先要通过预置
51、命令字(ICWi)对对8259A进行初始化,然后进行初始化,然后8259A将自动进入操作模式。可将自动进入操作模式。可在在8259A操作过程中通过操作命令字操作过程中通过操作命令字(OCWi)来定来定义义8259A的操作方式,而且在的操作方式,而且在8259A的操作过程中的操作过程中允许重置操作命令字,以动态地改变允许重置操作命令字,以动态地改变8259A的操作的操作与控制方式。与控制方式。每片每片8259A包含两个内部端口地址,一个偶地址端口包含两个内部端口地址,一个偶地址端口(A0=0),一个奇地址端口,一个奇地址端口(A01),其他高位地址码由,其他高位地址码由用户定义,用来作为用户定义
52、,用来作为8259A的片选信号的片选信号(CS)。1. 预置命令字预置命令字8259A的预置命令字共的预置命令字共4个个(ICW1ICW4)。不是。不是任何情况下都需要设置个预置命令字,可根任何情况下都需要设置个预置命令字,可根据据8259A的使用情况来选取,它们的设置流程的使用情况来选取,它们的设置流程如图如图9.8所示。所示。图图9.8从图从图9.9中可看出,中可看出,ICW1和和ICW2是必须的,是必须的,ICW3是是级联使用时才需要设置,级联使用时才需要设置,ICW4是在是在8086/8088-8259A配置系统中需要设置。配置系统中需要设置。(1) ICW1具体格式如图具体格式如图9
53、.9所示。所示。图图9.9端口地址为偶地址端口地址为偶地址(A0=0),D4表示当前写入表示当前写入8259A的的是预置命令字是预置命令字ICW1。IC4位用来说明是否需要设置位用来说明是否需要设置1CW4,对于,对于8086/8088系统系统中使用的中使用的8259A,IC4位恒置位恒置1,需要设置,需要设置ICW4来对来对8259A进行初始化。进行初始化。SNGL位用来说明中断系统中是一片位用来说明中断系统中是一片8259A单独使用,还单独使用,还是多片是多片8259A级联使用。单级使用时应将级联使用。单级使用时应将SNGL位置位置“1”。ADI位对位对8086/8088系统无效。系统无效
54、。LTIM位用来定义中断请求信号的触发方式。位用来定义中断请求信号的触发方式。LTIM=1时,时,表示表示IRi端上出现高电平为有效,端上出现高电平为有效,LTIM=0时,表示时,表示IRi端出现由低电平向高电平的正跳变沿为有效。端出现由低电平向高电平的正跳变沿为有效。(2) ICW2具体格式如图具体格式如图9.10所示。所示。图图9.10紧跟在紧跟在ICW1之后,端口地址为奇地址之后,端口地址为奇地址(A0=1)表示当表示当前写入前写入8259A的是预置命令字的是预置命令字ICW2,由它定义中断,由它定义中断类型码的高类型码的高5位。低位。低3位取决于当前的中断请求是由位取决于当前的中断请求
55、是由IR7IR0中哪一个端输入。由此可确定当前中断请中哪一个端输入。由此可确定当前中断请求的中断类型码。求的中断类型码。(3) ICW3只对级联方式有效,端口地址为奇地址。对只对级联方式有效,端口地址为奇地址。对于主于主8259A,使用格式如图,使用格式如图9.11(a)所示,对于从所示,对于从8259A的使用格式如图的使用格式如图9.11(b)所示。所示。图图9.11ID2ID0用来表明该从用来表明该从8259A是接在主是接在主8259A的哪个的哪个IR端上,例如某片从端上,例如某片从8259A的的ID2ID1ID0=100,则,则表示该从表示该从8259A是接在主是接在主8259A的的IR
56、4端上。端上。(4) ICW4对于对于8086/8088系统是必须设置的预置命令系统是必须设置的预置命令字,其具体格式如图字,其具体格式如图9.12所示。所示。图图9.12端口地址为奇地址端口地址为奇地址(A0=1),PM位对于位对于8086/8088系系统配置来说恒置统配置来说恒置“1”,AEOI用来定义是否采用自用来定义是否采用自动动EOI方式,方式,SFNM用来定义在级联方式下是否采用来定义在级联方式下是否采用特殊完全嵌套方式,在单级使用方式下用特殊完全嵌套方式,在单级使用方式下SFNM位位无效。无效。BUF位用来表明位用来表明8259A是否采用缓冲方式,如果是否采用缓冲方式,如果BUF
57、位为位为1,表示采用缓冲方式,这时双功能信号线,表示采用缓冲方式,这时双功能信号线 EN 有效。有效。EN=0,表示允许缓冲存储器输出,表示允许缓冲存储器输出,EN=1,表示允许缓冲存储器输入。这种情况下由表示允许缓冲存储器输入。这种情况下由M/S位定位定义主从关系。义主从关系。M/S=1,表示该片是主,表示该片是主8259A,M/S=0,表示该片是从,表示该片是从8259A。如果。如果BUF位为位为0,表,表示不采用缓冲方式,这时双功能信号线示不采用缓冲方式,这时双功能信号线 SP有效,有效,SP=0表示该片是从表示该片是从8259A,SP=1,表示是主,表示是主8259A,这种情况下这种情
58、况下M/S位无效。位无效。当当8086系统中系统中8259A单级使用,其端口地址为单级使用,其端口地址为80H和和81H,可用下面的初始化程序段来写入预置命令字,可用下面的初始化程序段来写入预置命令字ICW1ICW4:MOV AL,13H定义定义ICW1OUT 80H,AL;MOV AL,18H定义定义ICW2OUT 81H,AL;MOV AL,01H定义定义ICW4OUT 81H,AL;所设定的预置命令字具体格式及含义如图所设定的预置命令字具体格式及含义如图9.13所示。所示。由由ICW2可确定该可确定该8259A引入的引入的8级中断的中断类型码级中断的中断类型码为为18H1FH。2. 操作
59、命令字操作命令字8259A经经ICWi预置后已进入初始化状态,可接收来预置后已进入初始化状态,可接收来自自IRi端的中断请求。自动进入操作命令状态,准端的中断请求。自动进入操作命令状态,准备接收备接收CPU写入写入8259A的操作命令字的操作命令字OCWi。(1) OCW1用来实现中断屏蔽功能,其端口地址为奇用来实现中断屏蔽功能,其端口地址为奇地址地址(A01),OCW1内容被直接置入中断屏蔽寄存内容被直接置入中断屏蔽寄存器器IMR中,其格式如下:中,其格式如下:A0 7 01M7 M6 M5 M4 M3 M2 M1 M0Mi= 1:屏蔽由屏蔽由IRi引入的中断请求引入的中断请求 0:允许允许
60、IRi端中断请求进入端中断请求进入图图9.13(2) OCW2用来定义中断结束方式,其端口地址为偶用来定义中断结束方式,其端口地址为偶地址地址(A0=0),其格式如图,其格式如图9.14所示。所示。图图9.14由由R,SL,EOI 3位编码可定义多种不同的中断结束位编码可定义多种不同的中断结束方式或发出置位优先权命令。方式或发出置位优先权命令。当当3位编码为位编码为“001”,则定义,则定义8259A采用普通采用普通EOI结结束方式,一旦中断服务程序结束,将给束方式,一旦中断服务程序结束,将给8259A送出送出EOI结束命令,结束命令,8259A将将ISR寄存器中当前级别最寄存器中当前级别最高
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西葫芦的种植课程设计
- 认识电吉他教学课程设计
- 两人开店合同范例
- 桥梁道路咨询合同范例
- 工程购销合同范例表格
- 精装房公寓合同范例
- 泡菜工厂采购合同范例
- 全新承包工地食堂协议书3篇
- 合同录入系统流程3篇
- 仓储互诚合同协议示范3篇
- 安徽省合肥市包河区2023-2024学年三年级上学期语文期末试卷
- 【MOOC】新媒体文化十二讲-暨南大学 中国大学慕课MOOC答案
- 无人机制造关键技术-洞察分析
- 2024-2025学年二年级数学上册期末乐考非纸笔测试题(二 )(苏教版)
- 2024年度智能制造生产线改造项目合同
- 2024年度食堂档口承包合同(含菜品研发)3篇
- DB32T 4578.2-2023 丙型病毒性肝炎防治技术指南 第2部分:患者管理
- 护理轮科心得
- 仓库安全培训
- 《物业客服培训教程》课件
- 英语期末复习讲座模板
评论
0/150
提交评论