8259A的工作方式——程序查询方式
不使用中断,用软件寻找中断源
在这种方式下,8259A不向CPU发送INT信号,或者CPU禁止中断输入
申请中断的优先级不是由8259A提供的中断类型码而是由CPU发出查询命令得到的
查询过程:
1.CPU先向8259A发出查询命令
2.8259A接到查询命令后,就把下一个IN指令(对偶地址端口的读指令)产生的脉冲作为中断响应信号,此时,若有中断请求信号,则在ISR中相应位置“1”,并把该优先级送上数据总线
3.8259A供CPU读取查询的代码格式为:
4.I是中断请求标志
I=1有中断,W2W1W0有效,W2W1W0表示申请服务的最高中断优先级
I=O没有中断,W2W1W0无效
在查询方式下,CPU不需执行中断响应周期,不必安排中断向量表
查询方式由OCW3的P=1来确定
8259A的工作方式——中断结束方式
中断结束方式是指中断如何结束的方法
这里的“结束”不是指中断服务程序的结束,中断服务程序的结束用IRET指令就可完成,这里的“结束”是指如何和何时使8259A中的ISR中的相应位清零。ISR中某位为“1”,表示CPU正在为之服务;某位为“0”表示CPU已经停止(结束)为之服务。而IRET指令主要是恢复程序的断点,它并不能使ISR的相应位清零
8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI)
自动中断结束方式(AEOI):中断响应后ISR中最高优先级位自动复位
在自动中断结束(AEOI)方式下,8259A自动地在最后一个中断响应脉冲的后沿将中断服务寄存器ISR中的相应位清零
过程:中断请求,CPU响应,发第一个,ISR相应位置“1”,CPU发第二个,8259A提供中断类型码,ISR相应位清零,结束。显然,ISR的相应置“1”位在CPU中断响应周期内自生自灭,因此在ISR中不会有两个或两个以上的置“1”位
应用场合:8259A单片系统,或不需要嵌套的多级中断系统。AEOI方式只能用于主片8259A,不能用于从片8259A
自动中断结束方式由ICW4的AEOI=1确定
命令中断结束方式(EOI):中断服务程序返回前,需要处理程序发出对ISR中相应位复位的中断结束命令
命令中断结束方式(EOI)是在中断服务程序返回之前,向8259A发中断结束命令(EOI),使ISR中的相应位清零。它包括两种情况
①非特殊EOI命令:全嵌套方式下的中断结束命令称为非特殊EOI命令,该命令能自动地把当前ISR中的最高优先级的那一位清“0”( ISR中最高优先级位复位)
②特殊EOI命令:非全嵌套方式下的中断结束命令称为特殊EOI命令。在非全嵌套方式下,由于无法确定最后响应的是哪一级中断(非全嵌套方式各中断源没有固定的优先级别,因此也就不知道谁高谁低),所以应向8259A发出特殊EOI命令,即指定哪一级中断返回,使其ISR中的相应位清“0”(命令中指定的ISR中相应位复位)