计算机科学与技术系
实 验 报 告
专业名称 计算机科学与技术
课程名称 微机原理与接口技术
项目名称 8259A中断控制器实验
班 级
学 号
姓 名
同组人员 无
实验日期 2016/12/17
一、实验目的与要求:
(简述本次实验要求达到的目的,涉及到的相关
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
,实验的具体要求。)
1、了解8259A的内部结构,工作原理;
2、了解8259A和8088的接口逻辑;
3、熟悉8259A的控制寄存器和初始化编程方法,了解8088是如何响应中断,退出中断的。
二、实验内容
(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )
内容:1、编制程序,拨动单脉冲开关,脉冲信号送给8259A的IR0,触发中断,8088计数中断次数,显示在G5区的数码管上。
原理:
1. 8259控制器的介绍
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如图6-1所示。 8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
ICW1格式
ICW2格式
ICW3格式
ICW4格式
OCW格式
2.8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
三、实验分析与小结:
(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路)
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 ;8259初始化
MOV DX,IO8259_0 ;写ICW1
mov al,13h ;上升沿触发,单片,写ICW4
out dx,al
mov dx,IO8259_1 ;写ICW2
mov al,08h ;00001000B, ICW2:中断号为08H, IR0的功能调用
out dx,al
mov al,09h ;00001001B,ICW4:工作在8086/88 方式,缓冲方式一般嵌套
out dx,al
mov al,0feh ;11111110B,只响应IRQ0中断(OCW1:屏蔽字)
out dx,al
RET
Init8259 ENDP
WriIntver PROC NEAR ;写入中断向量表程序
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H ;20H-23H为IR0的矢量地址 中断号8x4=32=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 ;写OCW2
MOV AL,20H ; EOI(中断服务程序结束命令)刚刚服务完的中断源
OUT DX,AL
POP AX
POP DX
IRET
END START
1.程序分析:
程序开头的EXTRN表示的意思是:在当前模块所使用的标识符中,哪些已经在其他模块中已经被定义。在Init8259程序中需要按顺序写入ICW1、ICW2、ICW4,在WriIntver程序中写入中断向量表程序,其中中断向量程序可以有多种方法写入。LedDisplay将调用数码管显示。INT_0子程序中写入中断程序。
2.结果分析
如图所示,在数码管上显示当前中断的次数。
3.小结
该实验使我们熟悉了8259A中断的工作方式和初始化命令字ICW及操作命令字OCW的作用,学习并掌握了8088/8086与8259A的连接与控制方法。本来上课的时候学的有些模糊,但是经过实验课自己动手实验和老师的细心讲解,本来模糊的地方就很清楚了,每次上实验课都有一种又学到了好多知识的感觉。实验中,总会遇上电脑与硬件总是连不上的情况,我们听从老师的建议,将程序和实验箱都关闭再重新启动或者是换一个电源,这才能够连上。
四、其它
无。
得分(百分制)