7. 【可编程中断控制器8259A】(下):ICW、OCW、内部寄存器的寻址方法、使用举例

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。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



两片8259A电路连接方法(补充)

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值