8259A中断控制器实现

  • 格式:doc
  • 大小:90.50 KB
  • 文档页数:6

一、实验目的与要求
1、了解8259的内部结构,工作原理;了解8259A 与8088的接口逻辑;
掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。

二、实验逻辑原理图与分析 2.1 画实验逻辑原理图
AD0~AD15
ALE
WR#
INTR INTA
数据锁存器
地址锁存器
地址译码器D0~D7
CS#A0
WR#INT INTA#
IR0
A0
2.2 逻辑原理图分析
8282地址锁存器,用于8086CPU 与8259A 芯片地址线的连接用于总线周期T1状态
下发出的地址信号。

经锁存后的地址信号可以在整个周期内保持稳定不变,8286收发器用于8086CPU 与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS )的选通。

(1)、8086是Intel 系列的16为微处理器,芯片上有4万个晶体管,采用NMOS 工艺制造,用单一的+5V 电源,时钟频率为4.77MHZ~10MHZ.8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据,可寻址的内存空间为1MB 。

(2)、8282锁存器:用来锁存8086访问存储器或I/O 端口时,于总线周期T1状态下发出的地址信号。

经锁存后的地址信号可以在整个周期内保持稳定不变 (3)、8286收发器:可以进行双向数据锁存 (4)、8259A 可编程中断控制器主要功能:
1)、 1片8259A 能管理8级中断,通过级联用9片8259A 可以构成64 级主从 式中断系统
2)、每一级中断可以屏蔽或允许
3)、在中断响应周期,8259A 可提供相应的中断类型号。

4)、 可编程使8259A 工作在多种不同的方式。

(5)、8259A 的内部结构:
1)、IRR:当IR0-IR7某一个引脚上出现有效中断请求时,IRR对应位被置1
2)、IMR:当IR0-IR7中需要屏蔽的,IMR对应位置1
3)、ISR:是一个8位寄存器,通过8位二进制数的值纪录当前正在处理的中断请求。

4)、数据总线缓冲器:是一个8位双向三态缓冲器,是8259A与系统之间传送信息的数据通道
5)、读写控制逻辑:根据CPU的读写命令确定数据总线缓冲器中数据的传输方向
6)、控制逻辑:8259A的控制逻辑部分主要包括了一组初始化命令寄存器和一组操作命令字寄存器,其作用是确定8259A的工作方式
三、程序分析
3.1、程序功能:拨动单脉冲开关,将脉冲信号送给8259A的IR0,触发中断,
8088计数中断次数,显示与G5区的数码管上
3.2程序代码分析
(1)写初始化8259,初始化命令字ICW1(设置8259的工作方式)上升沿触发,单片工作。

端口地址0F000H
初始化命令字ICW1=13H
13H =0001 0011
D7~D5:不使用D4:1 特征位
D3:0 上升沿触发D1:1 单片工作
D0:1 写ICW4
MOV DX,IO8259_0
MOV AL,13H
OUT DX,AL
(2)、写初始化命令字ICW2(设置中断类型码),端口地址0F001H ,中断类型码为08H,由IRO引脚申请中断请求
初始化命令字ICW2=08H
08H =0000 1000
D7~D3:0000 1中断类型码的高5位
D2~D0:000 由IRO引脚申请中断请求
MOV DX,IO8259_1
MOV AL,08H
OUT DX,AL
(3)、写初始化ICW4(方式控制初始化命令字,设置中断结束方式),用于一般嵌套,缓冲方式,发送EOI结束命令(在中断服务程序最后发送一个EOI结束命令,将ISR对应位清0),端口地址0F0001H
初始化命令字ICW4=09H
09H =0000 1001
D7~D5:0000 ICW4的标示码D4:0 一般嵌套
D3~D2:10 8259A工作与缓冲方式D1:0正常EOI
D0:1 8086、8088系统
MOV AL,09H
OUT DX,AL
(4)、写操作命令字OCW1(设置和清除中断屏蔽寄存器),IR7~IR6屏蔽,IR0引脚产生的中断请求不被屏蔽端口地址:0F001H
写操作命令字OCW1=FEH
FEH =1111 1110
D7~D1:1111 111 不允许IR7~IR6中断请求被屏蔽
D0:0 IR0引脚产生的中断请求不被屏蔽
MOV AL,0FEH
OUT DX,AL
(5)、将中断服务程序的入口地址(CS:IP)写入中断向量表,中断向量表的地址,由于中断类型号是08H,则中断向量表地址=08H*4=20H
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,INT_0
STOSW
MOV AX,CS
STOSW
POP ES
WriIntver ENDP
(6)中断服务程序的功能:每当IR0引脚有一个产生一个请求,Counter中的内容+1,计算执行中断服务程序的次数
INT_0: PUSH DX
PUSH AX
MOV AL,Counter
ADD AL,1
DAA
MOV Counter,AL
MOV ReDisplayFlag,1
MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
POP AX
POP DX
IRET
(7)、将counter代表执行中断服务程序的次数,显示在数码管的后2个上LedDisplay PROC NEAR
MOV AL,Counter
MOV AH,AL
AND AL,0FH
MOV Buffer,AL
AND AH,0F0H
ROR AH,4
MOV Buffer + 1,AH
MOV Buffer + 2,10H ;高六位不需要显示
MOV Buffer + 3,10H
MOV Buffer + 4,10H
MOV Buffer + 5,10H
MOV Buffer + 6,10H
MOV Buffer + 7,10H
LEA SI,Buffer
CALL Display8
RET
LedDisplay ENDP
四、实验数据和结果分析
4.1 实验结果数据
实验结果: 1
4.2 结果数据分析
由逻辑电路图可知,外设的中断请求信号由IR2端引入。

(1)当拨动一下单脉冲(上升沿)时即IRO引脚产生一个中断请求信号,则IRR寄存器的D0位置1
(2)PR对中断优先权和中断屏蔽寄存器的状态进行判断,由于IRR寄存器只要D0位为1,且为允许中断状态,,则向CPU发高电平信号INT,请求中断服务。

(3)CPU响应中断时,送回应答信号 #INTA 。

(4)8259A接到来自CPU的第一个信号#INTA时,当前中断服务寄存器(ISR)中相应位置位,并把IRR中相应位复位。

同时,8259A准备向数据总线发送中断类型号。

(5)根据中断类型好08H,得到中断向量地址20H,通过中断向量表的地址可以得到中断服务程序的入口地址,则执行中断服务程序,中断服务程序的功能是,每执行一次中断服务程序counter+1=1,在中断服务程序结束时发送EOI命令,将ISR寄存器清0.
注意counter初始值为0
(6)将counter=1(执行中断服务程序的次数)显示在数码管上
五、实验问题分析、思考题与小结
5.1实验问题分析、思考题
(1)中断类型码、中断向量地址、以及中断服务程序的入口地址
(2)中断向量地址=中断类型号(08H)*4
(3)中断服务程序的入口地址在中断向量表中
(4)断点不固定
5.2实验小结
通过此次实验,使我熟悉了使用断点、单步进入、单步运行找到断点处,了解了每次中断结束,ISR(中断服务寄存器)的相应位清零,即复位,以及响应中断前要做的工作:关闭中断,保护断点,写中断向量表,即中断服务程序的段基址写入CS、偏移地址写入IP,以便在执行中断服务程序时,找到其入口地址。

对于这次实验我明白了所谓中断,是指CPU在正常运行时由于程序的预先安排或内外部事件引起CPU暂行正在运行的程序,转到为预先安排的事件或内外部事件服务的程序中去,服务程序执行结束后再返回到暂行的程序继续执行。

六、其它
得分(百分制)。