code2012

加油,坚持,努力,自信
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

8259A的编程

Posted on 2011-06-09 17:50  code2012  阅读(2750)  评论(0编辑  收藏  举报
补充知识:对8259中断控制器的说明2

3. 8259A的编程

因为8259A是可编程的中断控制器,所以它的操作是用软件通过命令进行控制的。8259A的编程命令字有两类:一是初始化命令字(ICW),二是操作命令字(OCW)。相应的8259A的控制部分有一些可编程的位,它们分布在7个8位寄存器中。这些寄存器分成两组,一组用作存ICW,另一组存OCW。当计算机刚开机时,用初始化程序设定ICW,即由CPU按次序发送2~4个不同格式的ICW,用来建立起8259A操作的初始状态,此后的整个工作过程中该状态保持不变。相反操作命令字(OCW)用于动态控制中断处理,是在需要改变或控制8259A操作时发送的。注意:当发出ICW或OCW时,CPU中断申请脚INTR应关闭(使用CLI关中断指令)。

1. ICW(ICW1、ICW2、ICW3、ICW4)初始化命令字编程格式

(1) ICW1(芯片控制初始化命令字)功能介绍

 

 

A0

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

0

1

LTIM

ADI

SNGL

IC4

 

16位机无效

标志位

电平触发

无效

弹片使用

需要ICW4

ICW1负责启动8259A和进行初始化工作:

1) 清除IMR

2) 把最低优先权分配给IR7

3) 把最高优先权分配给IR0

4) 将从设备标志ID置成7

5) 清除特殊屏蔽方式以及设置读IRR方式

(2) ICW2(中断类型号的设置)功能介绍:

 

 

A0

D7

D6

D5

D4

D3

D2

D1

D0

1

T7

T6

T5

T4

T3

0

0

0

 

中断类型号的高5位

16位机无效

ICW2负责规定中断类型号字节。编程时规定高5位T7---T3,低3位由IR的编码写入。

例8.3.1:输入时地址线A0=1,IR0---IR7的中断向量为08H---0FH,PC/XT机中的T7—T3==00001,当IR4申请时8259向CPU发出中断申请的类型号为00001100==0CH。

(3) ICW3(主/从片初始化命令字)功能介绍:

主片ICW3:

A0

D7

D6

D5

D4

D3

D2

D1

D0

1

S7

S6

S5

S4

S3

S2

S1

S0

主片ICW3负责记录与从片哪一个输入端与从片相连。

当主片输入端IRi上连接有从片的INT时,则Si=1;否则Si=0

从片ICW3:

A0

D7

D6

D5

D4

D3

D2

D1

D0

1

*

*

*

*

*

ID2

ID1

ID0

从片ICW3负责自己连接到主片的哪一端。

应用ICW3时的注意点:

一是什么时候用ICW3:即当ICW1中的SNGI位为0时,也就是工作于级联方式,才需要ICW3设置8259A的状态。

二是(主片接出)判断哪个引脚(IR7—IR0)有级联:当D7—DO的某位为1时则接有从片,为0时不接从片。

三是(从片接入)判断接入主片的哪个引脚:是通过对D2 D1 D0三位的组合来判断接入的引脚。

(4) ICW4(方式控制初始化命令字)功能介绍:

A0

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

0

SFNM

BUF

M/S

AEOI

uPM

ICW4负责缓冲器方式和中断结束方式的设置。

应用ICW4时的注意点:

一是什么时候写入ICW4:当ICW1的IC=1时,才使用ICW4。

二是命令字各位所代表的含义:

UPM:指定CPU类型:UPM=0时,工作于8080(8位机);UPM=1时,工作于8086(16位机)

AEOI:指定是否自动中断结束方式:1:自动中断结束方式;0:非自动中断结束方式。

BUF:8259A是否工作于缓冲方式:1:工作于缓冲方式、0:不工作于缓冲方式

SFNM:决定8259A在级联时是否工作于特殊全嵌套方式:1:工作于特殊全嵌套方式0:工作于一般全嵌套方式。