发布网友 发布时间:2024-10-16 05:36
共1个回答
热心网友 时间:2024-10-17 15:51
当一个外部中断请求(IRQ)通过IRQ线传输到8259A的中断请求寄存器(IMR),IMR会根据预设的中断屏蔽字(OCW1)来决定是否接受。如果被接受,8259A会将IRR(中断请求暂存寄存器)中对应IRQ的位置置1,表明有中断请求,并向CPU的INTR管脚发送信号。CPU可能正忙于执行指令,不会立即响应,而其他未屏蔽的IRQ请求同样会被暂存到IRR中,相应位置1。
当CPU完成指令执行后,会检查INTR是否有信号,如果有则进入中断服务。此时,CPU会向8259A的INTA发送信号,选择中断服务寄存器(ISR)中优先级最高的中断请求,置ISR相应位置为1,IRR相应位置清零,并将中断号写入中断向量寄存器IVR的低三位。CPU会再次发送INTA信号,8259A将中断号传给CPU。
这个过程可以用简单比喻解释:CPU就像公司的老总,8259A是秘书。想见老总的人(中断请求)递上名片(IRQ),秘书筛选后交给老总。中断屏蔽就像老总不想见的人,优先级判定则决定谁先被接待。如果EOI自动清除,中断处理完毕后,ISR的位会被清零,可能导致低优先级中断打断高优先级服务。
在处理中断时,8259A会根据中断优先级进行比较,如IRQ1正在处理,IRQ2请求时会被暂时放在IRR中,但IRQ0的优先级更高,会被立即放入ISR并发送中断请求。在多重中断情况下,这种优先级竞争是正常的。
8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。8259A引脚定义(1张)单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。8259A有多种工作方式,能用于各种系统。各种工作方式的设定是在初始化时通过软件进行的。 在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。