《微处理器》实验报告
学院:
班级:
姓名:
学号:
实验五 外部中断实验(8259)
-
实验要求
利用8086控制8259可编程中断控制器,实现对外部中断的响应和处理。要求程序中每次中断进行计数,并将计数结果用8255的PA口输出到发光二极管显示。
-
实验目的
1、学习8086与8259的连接方法。
2、学习8086对8259的编程控制方法。
3、了解8259的多片级联。
-
实验电路及连线
1、Proteus实验电路
2、硬件验证实验
硬件连接表
接线孔1 | 接线孔2 |
8255 CS | 8000H-8FFFH |
8259 CS | C000H-CFFFH |
PA0—PA7 | D1—D8 |
IR0 | 单脉冲电路(下降沿) |
-
实验说明
8086的外部中断必须通过外接中断控制器才可以进行外部中断的处理。在编程时应注意:
1、正确地设置可编程中断控制器的工作方式。
2、必须正确地设置中断向量表和中断服务程序的入口地址。
8259可外接8个中断源,本实验响应IR0中断,在中断处理函数中,分别对计数器进行自减1运算,然后通过8255 PA口输出,由LED对计数结果进行显示。
将单脉冲信号接到8259的IR0脚。每次中断时,可以看到LED显示减1。
实验程序流程图
-
实验步骤
1、Proteus仿真
a、Proteus中打开设计文档8259_STM.pdsprj ;
b、建立实验程序并编译,加载hex文件,仿真;
c、如不能正常工作,打开调试窗口进行调试。
汇编语言参考程序:
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI ;中断屏蔽clear interrupt
POP DS
;初始化主片8259
MOV AL, 11H ;0001 0001 级联,边沿触发,要ICW4
OUT 20H, AL ;ICW1
MOV AL, 08H ;0000 1000 中断类型号从8开始
OUT 21H, AL ;ICW2
MOV AL, 04H ;0000 0100
OUT 21H, AL ;ICW3
MOV AL, 01H ;0000 0001 非缓冲方式,8086/8088配置
OUT 21H, AL ;ICW4
MOV AL, 6FH ;OCW1 0110 1111 IR7,IR4引脚的中断开放
OUT 21H, AL
STI ;恢复中断 set interrupt
AA1: NOP ;空指令
JMP AA1 ;无限循环
MIR7: STI
CALL DELAY ;延时
MOV AX, 0037H ;37H
INT 10H ;显示字符7
MOV AX, 0020H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODE ENDS
END START
2、实验板验证
a.通过USB线连接实验箱
b.按连接表连接电路
c.运行PROTEUS仿真,检查验证结果
原理图设计
源代码:
仿真内容:
-
实验结果
中断请求信号的发出必须满足以下两个条件,即一是要设置中断请求触发器,二是要设置中断屏蔽触发器,在满足这两个的条件下,可以利用8086控制8259可编程中断控制器,实现对外部中断的响应和处理。
程序中每次中断进行计数,并将计数结果用8255的PA口输出到发光二极管显示。运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。
-
心得体会
这次实验是我们微处理器最后一节实验课,实验课给我们提供了一个将理论知识运用在实践当中的平台,通过结合实践,自己动手操作,加深了我对8259中断控制的理解,使我掌握了8086与8259的连接方法,以及如何利用编程实现对8259的控制。
相比于前几次实验,我认为这次实验难度并不低,尤其是实验过程中对实验箱的连线比较复杂,实验程序也是比较复杂。实验过程中我在控制字的确定这一环节费了不少功夫,确定控制字时一定要仔细对照控制子表,稍不注意就会出错。在编程时应注意:正确地设置可编程中断控制和工作方式;必须正确地设置中断服务程序地址。
这次实验不仅加深了我对理论知识的理解,而且还锻炼了我的思考能力和解决实际问题的能力,在实验中,汇编语言也让我积累了更加丰富的专业知识,同时对中断操作和功能实现的理解加深了印象,可谓是受益颇多。