资源描述
实验七 8259A中断控制器实验
一、实验目的与要求
了解8259A的内部结构、工作原理;了解8259A与8088的接口逻辑;掌握对8259A的初始化编程方法,了解8088是如何响应中断、退出中断的。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验内容
1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8088计数中断次数,显示于G5区的数码管上
三、实验原理图
四、实验步骤
1、连线说明:
B3区:CS、A0
——
A3区:CS1、A0
B3区:INT、INTA
——
ES8688:INTR、INTA
B3区:IR0
——
B2区:单脉冲
E5区:CS、A0
——
A3区:CS5、A0
E5区:CLK
——
B2区:2M
E5区:A、B、C、D
——
G5区:A、B、C、D
2、运行程序
3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
五、演示程序
.MODEL
TINY
EXTRN
Display8:NEAR
IO8259_0
EQU
0F000H
IO8259_1
EQU
0F001H
.STACK
100
.DATA
BUFFER
DB
8 DUP(?)
Counter
DB
?
ReDisplayFlag
DB
0
.CODE
START:
MOV
AX,@DATA
MOV
DS,AX
MOV
ES,AX
NOP
CALL
Init8259
CALL
WriIntver
MOV
Counter,0
;中断次数
MOV
ReDisplayFlag,1
;需要显示
STI
;开中断
START1:
CMP
ReDisplayFlag,0
JZ
START1
CALL
LedDisplay
MOV
ReDisplayFlag,0
JMP
START1
Init8259
PROC
NEAR
MOV
DX,IO8259_0
MOV
AL,13H
OUT
DX,AL
MOV
DX,IO8259_1
MOV
AL,08H
OUT
DX,AL
MOV
AL,09H
OUT
DX,AL
MOV
AL,0FEH
OUT
DX,AL
RET
Init8259
ENDP
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
RET
WriIntver
ENDP
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
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
END
START
开 始
初始化8259,初始化中断向量
0->计数器,1->显示标志
显示标志=1
在数码管上显示计数器值
0->显示标志
N
Y
开 始
计数器+1
对计数器进行十进制调整
1->显示标志
清零中断标志
中断返回
六、 实验结果
拨一下开关,数码管计数一次。
七、实验总结
8259A作为与8088cpu配套的可编程中断控制寄存器,其内部结构比较复杂,分为好几个寄存器和功能电路。通过这次实验,我对它各部分的相互配合实现功能有了更深的了解。学会了8259A与8088的接法;掌握了对8259A的初始化编程方法,主要是写控制字,设定其触发方式与级联方式等。
展开阅读全文