发新话题
打印

中断源识别

中断源识别


中断源识别 4 K0 H7 R' r. c
    当CPU响应中断、保护断点之后,就要进行中断源的识别,即寻找中断源,找到相应的中断服务程序入口。识别中断源有三种方法:查询法、向量法和强置程序计数器法。 / n: d0 r# e5 c7 }  Q4 c
    1.查询法
6 I" ]) h, q) N6 S    这是通过程序来查询是哪一个中断源提出的中断请求。该方法需要必要的硬件支持,如图5.2所示。设置一个输入端口,以便CPU可通过该端口读取各个中断请求触发器的状态。查询的过程用图5.3表示。在响应中断周期之后,对所有的中断,都先进入到这个查询流程。先看中断源1是否提出请求,若是,转去执行中断源1的中断服务程序,否则再看中断源2是否提出请求,若是,转去执行中断源2的中断服务程序。否则继续查看后面的中断源。. v1 Y$ P, O! ~. U$ o
& G1 a, z  c) H$ v5 V
: K3 ^0 w8 f5 I7 n
. y6 h- ~3 v2 l6 x  ?3 x1 Q
- _, ~9 l- \% V5 z. ^
4 ~1 x8 z3 w# s( z# d9 U
5 P3 G5 R: L) Q0 H

. l; q5 W! t0 {     查询的顺序决定了中断的优先级,这是因为,当发现一个中断源提出中断请求后,就转去执行相应的服务程序,而不再继续向下查找,不管它们是否也提出了请求。图中,中断源1的级别最高,中断源2的级别次之,中断源n的级别最低。 1 w3 E! |6 h7 V% a- K' }- j; O
    查询法的优点是硬件简单、程序层次分明,只要改变程序中的查询次序即可改变中断源的中断优先级,而不必变更硬件连接,其缺点是速度慢(从CPU响应中断到进入中断服务的时间较长),实时性差,特别是当中断源较多时,尤为突出。此外,查询要占用CPU时间,降低了CPU的使用效率。 / L1 T! R8 h# @0 c! l2 h7 W: t
    2.向量法(矢量法) * j- s: o5 P$ G2 b2 V
    这是一种硬件方法。在cPu发出中断响应信号INTA时,由硬件产生请求中断且在当前所有请求中级别最高的中断源的中断标识码(早期微机系统中称之为中断向量,向量法因此得名,而在8086/8088系统以及PC系列机中称之为中断类型码)。中断标识码是中断源的识别标志,可用来形成相应的中断服务程序的人口地址或存放中断服务程序的首地址。该方法需要的硬件支持如图5.4所示。当有中断源提出请求时,中断排队与编码器进行判优并产生其中级别最高的中断源的中断标识码。在INTA来时,CPU通过三态门获得中断标识码。, R6 R# }  H' G. v' N
4 \! R3 w% @: ^+ N& O! U
% o7 k: e- f  }% _6 Q

. g$ m) N! Z$ x/ |% H
" y/ l# @8 \$ k3 W, d2 @" D" m     用向量法识别中断源不占用CPU额外的时间,在中断响应周期即可完成,所以得到广泛的应用。即便在功能相对简单的单片机中,一般也采用此方法。
' u- i8 b9 e7 r8 S( U. n" l$ M    3.强置程序计数器法 / @8 {  o( F9 V
    这是用于8080、Z80等8位CPU的一种方法,早已被淘汰。它的基本做法是:在CPU响应中断时,用硬件方法产生一条特殊指令(重新启动指令),该指令将程序计数器:PC强行置成中断服务程序人口地址,从而进入中断服务程序。如果将此方法类推到8086,则是利用硬件方法产生一条特殊指令,强行将cs、IP设置为中断服务程序入口地址。



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题