文章目录
- 命令字的初始化(ICW)
-
- 1、ICW1:芯片控制初始化命令,写入偶地址端口。
- 2、ICW2:中断类型码初始化命令字,写入奇地址端口
- 3、ICW3:主从片初始化命令字,写入奇地址端口【主片与从片】ICW不同的是,初始化时要分开写
- 4、ICW4:工作方式命令,写入奇地址端口
- ICW1~ICW4初始化过程顺序不能颠倒
- 初始化ICW应注意的问题
- 操作命令字(OCW)
-
- 1、OCW1:中断屏蔽命令,写入奇地址端口
- 2、OCW2:设置优先循环模式和中断结束模式的操作命令,写入偶尔地址端口
- 3、OCW三、写入偶地址端口
- 初始化OCW应注意的问题
- 8259A内部寄存器的搜索方法
- ----------------------------------------------------------------
- 8259A编程举例
-
- 例子1:单片8259A
- 例子2:两片8259A
- 两片8259A电路连接方法(补充)
分为两类: (1)初始化控制字: ICW1、ICW2、 ICW3、ICW4 (2)操作命令字: OCW1、OCW2、 OCW3
也分为两类: (1)初始化编程: 是对8259A初始化命令字写入工作前,是微机上电时的原始化命令字BIOS在整个系统工作过程中完成并保持不变。 (2)操作命令编程: 它是在应用程序中进行的,8259的工作模式可以在初始化后的任何时候写入。
A0=0 偶地址端口 A0=1 奇地址端口 对8259命令字的初始化
、操作命令字
的写入及对8259工作状态
读出是通过这两个端口地址实现的。 由于8259只有两个端口地址,控制字多达7个,因此需要通过写入顺序和特征位区分它们。
命令字的初始化(ICW)
写初始化命令字时,必须按顺序填写,并要求ICW1写入偶地址端口,其他初始命令写入奇地址端口。
1、ICW1:芯片控制初始化命令,写入偶地址端口。
2、ICW2:中断类型码初始化命令字,写入奇地址端口
3、ICW3:主从片初始化命令字,写入奇地址端口【主片与从片】ICW不同的是,初始化时要分开写
多片8259时只包含在系统中,ICW3才有意义。 当ICW1的SNGL=1时,系统中只有一个8259,ICW3不设。 只有当ICW1的SNGL=0时,说明系统中有多片8259,才设置ICW3。
若8259为主片,ICW3用于指示哪个中断输入引脚有从片连接。 哪一个是1,说明哪一个是从片相连的, 哪一个是0,说明哪一个是无从片连接的。
若8259为从片,ICW用于指示从片INT引脚是连接到主片的中断输入引脚。
4、ICW4:工作方式命令,写入奇地址端口
ICW1~ICW4初始化过程顺序不能颠倒
初始化ICW应注意的问题
①初始化前中断,初始化后中断。 ②系统中的每片8259都要初始化。 ③初始化必须按顺序进行,不能颠倒。 ④确保每个初始化命令字都写入正确的端口。 ⑤级联时,主从片的ICW3要分开写。 ⑥初始化后,如果要改变某一点ICW,必须重新编程初始化,不能单独写入一个ICW。
操作命令字(OCW)
8259有三个操作命令,设置在应用程序中。设置时对顺序没有严格要求,但对端口地址有严格要求。 OCW写入奇地址口,OCW2、OCW写入偶地址口
1、OCW1:中断屏蔽命令,写入奇地址端口
中断屏蔽命令中的每个人和中断请求中的每个人 一对应,要屏蔽哪个上的中断请求,将OCW1中哪位置1。 其实就是写IMR,给IMR各位赋值。 读奇地址端口的内容,得到的是IMR的值。
例子,要禁止IR2及IR如何设置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的优先循环和中断结束。fnt> 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。