实验七-8259中断控制器实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术系
实验报告
专业名称计算机科学与技术
课程名称微机原理与接口技术
项目名称 8259A中断控制实验
班级
学号
姓名
同组人员无
实验日期 2016/06/28
一、实验目的与要求
1、了解8259的内部结构,工作原理;了解8259A与8088的接口逻辑;掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。
二、实验逻辑原理图与分析(汇编—流程图)
2.1 画实验逻辑原理图
2.2 逻辑原理图分析
实验原理与分析:由于实验中需拨动单脉冲开关,送给8259A的IR0,触发中断,8088计数中断次数,显示于G5区的数码管上。故8259中断控制实验需要8259A芯片,8282地址锁存器,用于8086CPU与8259A芯片地址线的连接,8286收发器用于8086CPU与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS)的选通。
三、程序分析
3.1程序代码分析
.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 ;ICW1:0001 0011 上升沿触发,间隔为8,单片工作故没有ICW3,写ICW4
out dx,al
mov dx,IO8259_1
mov al,08h ;ICW2:0000 1000 中断类型码为:00001,用的中断请求为IR0
out dx,al
mov al,09h ;ICW4:0000 1001 000为ICW4的标识码,采用一般嵌套,缓冲方式,正常EOI,8086/8088系统
out dx,al
mov al,0feh ;OCW1:1111 1110 屏蔽其他IR,允许IR0发送中断请求
out dx,al
RET
Init8259 ENDP
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H ;20H~23H是IR0的矢量地址
LEA AX,INT_0
STOSW ;把INT_0的偏移地址写到ES:DI指向的内存单元中
MOV AX,CS
STOSW ;把段基址存入ES:DI的内存单元中
POP ES
RET
WriIntver ENDP
LedDisplay PROC NEAR
MOV AL,Counter
MOV AH,AL
AND AL,0FH ;0000 0001和0000 1111相与为0000 0001
MOV Buffer,AL ;第八位
AND AH,0F0H ;0000 0001和1111 0000想与为0000 0000
ROR AH,4 ;0000 0000
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,初始化命令字ICW1(设置8259的工作方式),ICW2(设置中断类型码),ICW4(方式控制初始化命令字,设置中断结束方式):
Init8259 PROC NEAR
;初始化命令字ICW1,
D
0 D
1
D
2
D
3
D
4
D
5
D
6
D
7
1 1 0 0 1 0 0 0 写ICW4 单片工作上升沿触发特征位
MOV DX,IO8259_0