刚才看到多中断源的电路图,我们需要考虑如果两个或两个以上的中断请求同时有效,微处理器应该响应哪个中断?如何得到中断向量?怎样设定它们的优先级?怎样保证微处理器按照优先级从高到低的方式来响应呢?从图3-4所表示的电路可以看出,每当产生两个或两个以上的中断请求,便形成一个新的中断类型号,例如,如果IR1#和IR0#均为低电平,则生成的中断类型号为FCH(252)。这时可以利用在中断向量表中存储优先级高的中断向量地址的办法来解决中断优先级设定问题。如果定义IR0#比IR1#有较高的优先级,就将IR0#的向量地址存储在内存单元4×FCH中。这个中断请求得到响应之后,该请求位就变为无效电平。于是另外的请求就组合成了新的类型号。继续重复上述过程,就可以实现按照优先级来响应多个中断源了。经过计算,7个中断请求信号组合起来将有128种可能性,对应128个类型号,对于每种可能的组合,我们找出参与组合的中断请求信号的优先级,把优先级最高的那个中断的入口地址填入向量表适当位置。这样,在响应这组中断源的请求后,最高优先级中断的服务程序便得到执行。采用这种方法,就意味着必须占用128个中断向量和中断向量表中0200H地址以上的一半存储空间。这种方法成本低,但是资源浪费。可是在某些专用场合,却不失是一种有效的中断扩展方法。 |