文章目录
8259的控制字分为两类:
(1)初始化控制字: ICW1、ICW2、 ICW3、ICW4
(2)操作命令字: OCW1、OCW2、 OCW3
8259的编程也分为两类:
(1)初始化编程:
是对8259A在进入工作前写入初始化命令字,是微机上电时由BIOS完成的,并且在系统整个工作过程中保持不变。
(2)操作命令编程:
是在应用程序中进行的,动态地控制8259的工作方式,可在初始化后任何时间写入。
8259有两个I/O端口地址:
A0=0 偶地址端口
A0=1 奇地址端口
对8259初始化命令字
、操作命令字
的写入及对8259工作状态
的读出都是通过这两个端口地址实现的。
由于8259只有两个端口地址,而控制字多达7个,因此要通过写入顺序和特征位来区分它们。
初始化命令字(ICW)
写初始化命令字时必须按顺序填写,并且要求ICW1写入偶地址端口,而其它的初始化命令字写奇地址端口。
1、ICW1:芯片控制初始化命令字,写入偶地址端口。
2、ICW2:中断类型码初始化命令字,写入奇地址端口
3、ICW3:主从片初始化命令字,写入奇地址端口【主片与从片的ICW3不同,初始化时要分开写】
只有系统中包含多片8259时,ICW3才有意义。
当ICW1的SNGL=1时,表示系统中只有一片8259,则ICW3不设。
只有当ICW1的SNGL=0时,表示系统中有多片8259,才设ICW3。
若8259为主片,ICW3用于指示哪个中断输入引脚上有从片相连。
哪一位为1,表明哪一位上有从片相连,
哪一位为0,表明哪一位上无从片相连。
若8259为从片,ICW3用于指示从片的INT引脚是接在主片的哪一个中断输入引脚上。
4、ICW4:工作方式命令字,写入奇地址端口
ICW1~ICW4初始化流程【次序不可颠倒】
初始化ICW应注意的问题
①初始化前应关中断,初始化后再开中断。
②系统中每片8259都要初始化。
③初始化必须按顺序,不能颠倒。
④确保每个初始化命令字写入正确的端口。
⑤级联时,主从片的ICW3要分开写。
⑥初始化后,若要改变某个ICW,则必须重新进行初始化编程,不能只单独写入一个ICW。
操作命令字(OCW)
8259的操作命令字有3个,是在应用程序中设置的,设置时次序上没有严格要求,但端口地址上有严格要求。
OCW1写入奇地址口,OCW2、OCW3写入偶地址口
1、OCW1:中断屏蔽命令字,写入奇地址端口
中断屏蔽命令字中的每一位与中断请求的各位一 一对应,要想屏蔽哪位上的中断请求,将OCW1中的哪位置1。
实际上就是写IMR,给IMR各位赋值。
读奇地址端口的内容,得到的是IMR的值。
例、若要禁止IR2及IR4引脚上的中断请求,如何设置8259的命令字,如何将这一命令撤消。(端口地址为60H,61H)
IN AL,61H ;奇地址
OR AL,0001 0100B
OUT 61H,AL
IN AL, 61H ;奇地址
AND AL,1110 1011B
OUT 61H,AL
2、OCW2:用于设置优先级循环方式和中断结束方式的操作命令字,写入偶地址端口
L2~L0有两层含义:
①当OCW2发特殊中断结束命令时,L2~L0指出了要清除的中断的优先级。
②当OCW2发特殊优先级循环命令时,L2~L0指出了最低的优先级。
R、SL、EOI配合决定了8259的优先级循环方式和中断结束方式。
R:设置优先级循环方式的,和SL配合决定优先级自动循环还是特殊循环。
EOI:设置中断结束方式的,和SL配合决定中断结束方式是一般中断结束还是特殊中断结束。
3、OCW3:写入偶地址端口
例子:
初始化OCW应注意的问题
操作命令字有3个,它们可在编程过程中反复设置,每设置一次,8259就按所设置的方式操作,操作完成后,所做的设置就不起作用了,再要进行一种操作时,要重新设置。
操作命令字的设置没有一定的顺序,但OCW1要写入奇地址口,OCW2和OCW3要写入偶地址口。
8259A内部寄存器的寻址方法
----------------------------------------------------------------
8259A编程举例
例子1:单片8259A
按以下要求初始化8259A:
- 接口地址为20H和21H;
- 中断为上升沿触发;单片8259A;不写ICW4;
- 与IR0-IR3对应的中断向量码为08H-0BH;
- IR4-IR7不使用。
初始化程序如下:
例子2:两片8259A
写出主8259A和从8259A的初始化程序段
- 2片8259级联,从片的INT接主片的IR2。
- 端口地址:主片20H、21H,从片A0H、A1H。
- 主片和从片均采用边沿触发。
- 主片采用特殊全嵌套方式,从片是一般全嵌套方式。
- 采用非缓冲方式,主片接+5V,从片接地。
- 主片的中断类型号为08H~ 0FH,从片的中断类型号为70H~77H。