首先来看一下8259的外部引脚:
8259的工作方式:
命令字
初始化命令(ICW1~ICW4)
注意命令字中的A0,若A0为1,则使用奇地址;若为0,则使用偶地址。
- ICW1进行中断触发方式和单片/多片使用的设置。其中D3设置触发方式,D1设置单/多片使用。
- ICW2进行中断号设置。初始化编程时只写高5位,低3位写0。低3位的实际值由外设所连接的IRi引脚编号决定,并由8259自动填写,比如连接IR5,则低3位为5。
- ICW3进行级联方式设置。只有系统存在2片以上8259时启用,否则不用。
- ICW4进行中断优先级排队方式和中断结束方式的设置。D4设置中断排队方式,D1设置中断结束方式。
因此由下图可以知道,ICW1采用偶地址,ICW2~ICW4采用奇地址。
操作命令(OCW1~OCW3)
注意命令字中的A0,若A0为1,则使用奇地址;若为0,则使用偶地址。
- OCW1执行常规的中断屏蔽/开放操作,置1屏蔽,置0开放。
- OCW2执行中断结束操作和优先级排队操作,D6、D5及D0~D2用于进行中断结束操作。D7进行优先级循环的操作。
- OCW3进行特定的中断屏蔽/开放操作,实际中很少用。
因此由下图可以知道,OCW1采用奇地址,ICW2~ICW3采用偶地址。
如下为OCW2中组合功能:
对8259的初始化设置流程(注意输出端口号的地址分奇地址和偶地址):