首页 理论教育 微机中断工作方式详解

微机中断工作方式详解

时间:2023-11-16 理论教育 版权反馈
【摘要】:8259A对中断的管理涉及多个方面,因此它有多种工作方式,如中断嵌套方式、优先级管理方式、中断请求方式、中断结束方式、中断屏蔽方式等。边沿触发方式8259A设置为边沿触发方式时,以上升沿为中断信号。中断查询方式8259A设置为中断查询方式时,8259A将依靠CPU的不断查询代替INT信号向CPU传送中断请求。8259A向CPU传送的查询字格式如图7-8所示。

微机中断工作方式详解

8259A对中断的管理涉及多个方面,因此它有多种工作方式,如中断嵌套方式、优先级管理方式、中断请求方式、中断结束方式、中断屏蔽方式等。由于8259A是一个可编程的芯片,所以这些方式都可以通过编程方法设置,用户可根据自己的需要选择相应的工作方式。

1.中断嵌套方式

8259A的嵌套方式有两种:全嵌套方式和特殊全嵌套方式。

(1)全嵌套方式

全嵌套方式是8259A最常用和最基本的一种嵌套方式,如果对8259A初始化后没有用操作命令字设置为其他嵌套方式,则8259A就自动按全嵌套方式工作,其特点是中断优先级管理为固定方式。在这种方式下,在为某中断服务期间禁止同级和较低级的中断请求,而较高级的中断请求仍可经INT端向CPU提出。

(2)特殊全嵌套方式

特殊全嵌套方式与一般全嵌套方式的区别在于:在为某中断服务期间不禁止同级的中断请求,即允许同级的和较高级的中断进入。这种方式所要解决的问题是:在多片级联的情况下,当某从片的中断得到响应、进入中断服务期间,来自该从片的更高级的中断请求仍能为主8259A所识别(对主8259A来说,同一从8259A的8个中断都是一个级别),并向CPU提出请求。所以,在级联的情况下,主片应设置为特殊全嵌套方式,从片一般设置为全嵌套方式,这样才可以实现全嵌套。

2.优先级管理方式

在实际应用中,中断源的优先级关系复杂,依次必须根据实际情况管理优先级。8259A默认的是固定优先级,另外提供了两种改变优先级的方式。

(1)固定优先级

这是大多数应用中采用的优先级方式。在该方式下,各中断源的优先级是固定的:IR0最高,IRl次之,然后依次降低级别。

(2)优先级自动循环方式

在该方式下,某一中断源的请求被响应后,其优先级自动降为最低,其他中断源的优先级也随之改变。例如,IR4提出请求并得到响应后,自动降为最低优先级,IR5变为最高优先级,优先级从高向低依次是:IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4

8259A设置为优先级自动循环方式后,最初的优先级是:IR0最高、IR7最低,其他依次类推。该方式适用于系统中多个中断源的优先级相等(难以分清它们的级别)的情况,使得各中断源的请求得到响应的机会均等。

(3)优先级特殊循环方式

该方式是通过编程(OCW2)人为地指定某个中断源的优先级降为最低,其他中断源的级别也随之改变。

3.中断请求方式

8259A有三种中断请求方式:

(1)电平触发方式

8259A设置为电平触发方式时,以高电平为中断信号。当中断输入端口出现高电平的时候表示有中断请求,且必须及时改变输入信号,否则容易引起多次中断。

(2)边沿触发方式

8259A设置为边沿触发方式时,以上升沿为中断信号。当中断输入端口出现上升沿的时候表示有中断请求,在实现中断请求后输入端可以一直保持高电平,不会引起多次中断。

(3)中断查询方式

8259A设置为中断查询方式时,8259A将依靠CPU的不断查询代替INT信号向CPU传送中断请求。查询时系统先关闭中断,然后向8259A送一个查询方式命令字,再执行一条读指令从8259A读一个查询字到CPU。当CPU查询到中断请求后转入中断服务程序。(www.xing528.com)

8259A向CPU传送的查询字格式如图7-8所示。其中D7=1表示有设备请求中断服务,W2W1W0三位代码表示当前中断请求的优先级别。

978-7-111-42233-4-Chapter07-17.jpg

图7-8 查询字格式

4.中断结束方式

当某一个中断请求被CPU响应后,该中断在中断服务寄存器ISR中的相应位被置位,表示CPU正在为该中断服务。在中断服务结束、中断返回之前的适当时刻应将中断服务寄存器ISR中该位复位,否则8259A就不能响应该中断源新的请求。这项工作称为中断结束处理。中断结束的方式分自动中断结束和非自动中断结束两种,而非自动中断结束方式又有一般中断结束和特殊中断结束之分。

(1)自动中断结束方式

该方式需要通过ICW4设置。设置成该方式后,对每一个中断,在中断响应时由8259A自动将ISR对应位清除。当然,为该中断的服务并不因此而受到影响。这种方式是为没有经验的程序员忘了在中断服务程序中给出中断结束命令而设立的。

(2)一般中断结束方式

这种方式配合一般全嵌套方式使用。采用这种方式反映在程序中是在具体的中断服务已做完、返回之前向8259A发一个一般中断结束命令,8259A就将ISR中当前已置l的最高位复位。因为在全嵌套方式下,ISR中当前已置1的级别最高的位对应了最后一次被响应和被处理的中断,也就是当前正在处理的中断,所以,将该位复位相当于结束了当前正在处理的中断。

(3)特殊中断结束方式

在特殊全嵌套方式下,不能确定ISR中哪一位是最后置位的,即哪一个中断请求是最后被响应的,这时就要采用特殊中断结束方式。采用这种方式反映在程序中就是要发一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位。特殊中断结束方式可理解成人为地将ISR中某一位复位。而一般中断结束方式要复位的ISR位是8259A自动寻找的。

在此,对级联系统中的从片的中断结束处理作一些说明。在将主片设置成特殊全嵌套方式的情况下,从片可能出现中断嵌套,在从片的某中断服务结束时,必须用软件检查被服务的中断是否为该从片唯一的中断。为此,先向从8259A发一个一般的中断结束命令,清除已完成服务的ISR中优先级最高的位,然后再读出ISR的内容,检查它是否为0,如果为0,则向主8259A发一个中断结束命令,清除(主8259A)ISR中与该从片相对应的位(这一步不能忘记);如果从8259A的ISR的内容不为0,则不向主8259A发中断结束命令,该中断返回后,CPU继续为该从片被打断的中断服务。

5.中断屏蔽方式

8259A有两种屏蔽中断源方式:普通屏蔽方式和特殊屏蔽方式。前者用得较多,后者仅用于一些特殊应用场合。

(1)普通屏蔽方式

在普通屏蔽方式下,将中断屏蔽寄存器IMR的某位置1,则它所对应的中断就被屏蔽,从而使这个中断请求不能由8259A送到CPU。如果IMR某位置0,则允许该中断起作用。

(2)特殊屏蔽方式

有些应用场合,希望一个中断服务程序能动态改变系统的优先权结构。例如,在执行中断服务程序的某一部分时,希望禁止较低级的中断请求,而在执行中断服务程序的另一部分时,又能够开放比本身级别低的中断。

为达到这样的目的,自然会想到使IMR中本身对应的位置l,使本级中断受到屏蔽,从而为开放较低的中断提供可能。但是,这样做就有一个问题:每当一个中断请求被响应时,就会使ISR对应位置1,只要没有发出中断结束命令,8259A就会禁止所有比它低的中断。所以,尽管当前处理的较高级的中断被屏蔽,但由于ISR位未被复位,较低级的中断请求在发出中断结束命令之前仍然不会得到响应。

为了解决上述问题,人们引进了特殊屏蔽方式。设置了此方式后,使IMR某位置l,就会同时使ISR的相应位复位。这样,可真正开放级别较低的中断。当然未被屏蔽的更高级中断也可以得到响应。

6.读8259A状态方式

8259A内部的IRR、ISR和IMR的状态可以通过适当的读命令读至CPU中,从而帮助程序员了解8259A的工作状态并进行下一步处理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈