文档库 最新最全的文档下载
当前位置:文档库 › 8259外部中断实验

8259外部中断实验

8259外部中断实验

一、实验目的

1.掌握8259芯片结构及工作方式;

2.熟悉8259的初始化和操作编程;

3.熟悉基本输出接口74LS273的应用。

二、实验原理

8259A是8086/8088系列的可编程中断控制器,它的主要功能是:

(1)具有8级优先级控制,通过级联可以扩展到64级优先级控制;

(2)每一级中断可由程序单独屏蔽或允许;

(3)可提供中断类型号传送给CPU;

(4)可以通过编程选择多种不同的工作方式。

8259A为28个引脚的双列直插式芯片,在Lab6000p实验箱中的8259模块连线如图所示:

图—1 8259模块连线

AD0~AD7、A0、/WR、/RD已分别连接至系统总线DB0~DB7、AB0、/IOW、/IOR;引出CS、IR0(即INT0)、INTA留给用户连接。

实验原理图如附录:

三、实验设备

https://www.wendangku.net/doc/b71257372.html,b6000p实验教学系统;

2.IBM-PC机

四、实验程序框图

图—2 实验程序框图

五、实验内容

1.用系统的08H中断, 实现每隔5秒钟响铃一次,同时在屏幕上显示信息”The bell is ring!”总共显示10次。

实验程序如下所示:

DATA SEGMENT

COUNT DW 91

STRING DB'The bell is ring!',0DH,0AH,'$'

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,ES:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,1CH ;去中断类型号为1CH

MOV AH,35H ;的中断向量到ES:BX

INT 21H

PUSH BX

PUSH DS

MOV DX,OFFSET RING

MOV AX,SEG RING

MOV DS,AX

MOV AL,1CH

MOV AH,25H

INT 21H

POP DS

IN AL,21H ;允许定时器中断AND AL,11111110B

OUT 21H,AL

STI

MOV SI,10

L1: CMP SI,0

JNZ L1

POP DX

POP DS

MOV AL,1CH

MOV AH,25H

INT 21H

MOV AX,4C00H

INT 21H

MAIN ENDP

RING PROC FAR

PUSH DS

PUSH AX

PUSH CX

PUSH DX

MOV AX,DATA

MOV DS,AX

STI

DEC COUNT

JNZ EXIT

MOV DX,OFFSET STRING

MOV AH,09H

INT 21H

MOV COUNT,91

DEC SI

EXIT: CLI

POP DX

POP CX

POP DS

STI

IRET

RING ENDP

CODE ENDS

END START

结果:

每隔5s在显示屏上显示‘The bell is ring!’,符合实验要求。

2.用8259和74ls273实现脉冲个数计数,脉冲个数以二进制形式在LED上显示。实验程序如下所示:

DATA SEGMENT

AA DB 21H

DATA ENDS

STACK SEGMENT

DB 100 DUP(?)

STACK ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

START: SUB CX,CX

MOV AX,0 ;设置中断服务程序入口地址

MOV ES,AX

MOV BX,80H

MOV AX,OFFSET DIANJI

MOV ES:WORD PTR[BX],AX

MOV AX,SEG DIANJI

MOV ES:WORD PTR[BX+2],AX

MOV AL,13H ;设置ICW1

MOV DX,8000H

OUT DX,AL

MOV AL,20H ;设置ICW2

MOV DX,8001H

OUT DX,AL

MOV AL,01H ;设置ICW4

OUT DX,AL

MOV AL,0FEH ;设置OCW1

OUT DX,AL

STI ;开中断

S1: JMP S1

MOV AX,4C00H ;返回DOS用

MAIN ENDP

DIANJI PROC FAR

PUSH DX

PUSH AX

INC CL

MOV AL,CL

MOV DX,9000H ;锁存器存器端口为9000H

OUT DX,AL

MOV AL,20H ;普通EOI结束命令

MOV DX,8000H

OUT DX,AL

POP AX

POP DX

IRET

DIANJI ENDP

CODE ENDS

END START

结果:

Lab6000p实验箱中的八盏LED灯以二进制的方式用来记录脉冲个数。

六、思考题

1.若想使单脉冲的中断类型号为22H,该如何修改程序?

答:由于IR0端对应的中断类型号必须为8的整数倍,而22H不是8的整数,故只能在IR0的中断类型号继续为20H的前提下,使单脉冲从IR2端引。故在设置中断程序入口地址时,应将中断向量放在内存中0:88H开始的连续四个字节中;OCW1应该设置为0FBH,即使IR2端不被屏蔽,而其他端均被屏蔽;在中断程序中,EOI 结束命令应使AL为22H,即OCW2为22H,使中断服务寄存器ISR2位清零。

2.为什么在初始化时未设置ICW3以及OCW2和OCW3?

答:ICW3只在8259级联使用时才进行设置,在本实验中只涉及一片8259,不涉及到级联的问题,所以ICW3可以省略;

OCW2为优先权循环方式和中断结束方式操作字,是在中断服务程序结束后写入;

OCW3为特殊屏蔽方式和查询方式操作字,由于实验过程中只有一个外部中断程序,故不需要设置OCW3。

微机原理与接口技术8259外部中断实验

医电61

刘晶

06121005

相关文档