CPU只有一个引脚INTR接受外部的可屏蔽硬件中断请求,为了管理多个外部的中断源,设计了8259A中断控制器。
8259A是可编程的中断控制器。
(1) 一片8259A中断控制器可以管理8级外部中断,并最后向CPU提出中断请求。
通过级联,采用1主8从的方式,可拓展管理64级中断。
(2) 每一级中断都可以通过设置内部屏蔽字进行屏蔽或允许
(3) 在中断响应周期,8259A可以向CPU提供相应的中断类型码
8259A结构:
(1)中断请求寄存器(8位)(IRR)
IRR是一个8位寄存器,IRR的D0~D7位分别对应着IR0~IR7。
IRR中的Di位置1,表明IRi引脚上有了中断请求信号。
当中断请求被响应后,IRR相应位复位
(2)中断屏蔽寄存器(8位)(IMR)
8位,IMR的D0~D7位分别对应着IR0~IR7,。
屏蔽字某位=1,则与该位对应的中断请求信号(IRRi位)不能被送到中断优先权电路。
(3)优先权电路
比较同时送达优先权电路的中断请求,哪一个级别最高。
比较CPU正为之服务的中断源和刚进入优先权电路的中断源,哪一个级别更高。
选出级别最高的中断源,然后通过INT端向CPU提出中断请求。
(4)中断控制电路
当判优电路选中一个中断源时,向CPU提出中断请求(INT)
通过接受CPU送来的两个连续的负脉冲。
(5)中断服务寄存器(ISR)
Di为1,表示CPU正在准备IRi的服务程序。由1变0说明IRI的中断服务子程序执行完。
所以ISR的每一位都是响应中断源的中断服务标志位。
8259A的工作过程:
(1)当引脚IR0~IR7有中断请求后,8259A中断请求寄存器ISR相应位置1。
(2)没有被中断屏蔽寄存器屏蔽的中断请求将送到优先权电路判优。
(3)选中优先级最高的中断源,然后通过从引脚INT向CPU发出中断请求信号。
(4)CPU满足条件后,通过引脚向8259A发出两个负脉冲的中断响应信号。
收到第一个中断响应信号后,使中断服务寄存器ISR与被选中中断源对应位置1,同时把中断请求寄存器相应位清0。
收到第二个中断响应信号后,将中断源类型码n送到CPU
....保护现场、CPU转入中断服务子程序、恢复现场
在执行IRET前,向8259A写中断结束命令字,使8259A的中断服务寄存器ISR相应位清0,表示中断请求服务完毕。