8259中断控制实验报告
实验六8259中断控制
一、实验目的
1.学习8086/8088 CPU中断系统的知识。 2.学习8259中断控制器的使用。
二、 实验内容
1. 编写程序,使 8255 的 A 口控制 LED 灯。CPU 执行主程序时四个绿灯亮。用脉冲信号作为 8259 的 IR3 的输入信号,向 CPU 请求中断。CPU 在中断服务程序中熄灭绿灯,并使 4 个红灯亮。中断服务程序结束,又返回主程序,再使绿灯亮。
2. 编写程序,使 8255 的 A 口控制 LED 灯。CPU 执行主程序时四个绿灯亮。用脉冲信号作为 8259 的 IR3 的输入信号,向 CPU 请求中断。CPU 在中断服务程序中每中断一次,使 4 个红色 LED 灯中每次只亮一个灯,并随每一次中断逐次移动一个灯的位置,中断服务程序结束,又返回主程序,再使绿灯亮。
2
三、实验区域电路连接图
(1) 8259的INT连8088的INTR(Xl5); (2) 8259的INTA连8088的INTA(Xl2); (3) “”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);
(4)8259的CS端接EX1(60H); (5)连JX4→JX17。 (6)IOWR→IOWR; (7)IORD→IORD;
(8)A0→A0;(9)PA0…PA3→L2,L6,L10,L14;PA4…PA7→L3,L7,L11,L15。
四、程序框图
1.
3
2.
4
五、实验步骤
(1)8259 的 INT 连 8088 的 INTR(Xl5); (2)8259 的 INTA 连 8088 的 INTA(Xl2);
(3)单脉冲插孔和 8259 的 3 号中断 IR3 插孔相连;(单脉冲与时钟单元);
(4)8259 的 CS 端接 EX1(60H); (5)连 JX4→JX17。 (6)IOWR→IOWR; (7)IORD→IORD;
(8)A0→A0; (9) PA0…PA3→L2,L6,L10,L14; PA4…PA7→L3,L7,L11,L15。
六、实验程序
1.
CODE SEGMENT ASSUME CS:CODE INTPORT1 EQU 0060H INTPORT2 EQU 0061H INTQ3 EQU INTREEUP3 INTCNT DB ?
5
ORG 1200H START:CLD MOV DX,0FF2BH
MOV AL,80H ;设置8255方式字:A口输出 OUT DX,AL
CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H ;ICW1=00010011B,边沿触发、单8259、需ICW4
MOV DX,INTPORT1 OUT DX,AL MOV AL,08H MOV DX,INTPORT2 OUT DX,AL
MOV AL,09H ;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOI
OUT DX,AL
MOV AL,0F7H ;OCW1=11110111B OUT DX,AL
MOV INTCNT,01H ;延时 STI WATING:
MOV DX,0FF28H;主程序绿灯亮(低四位为0
6
则绿灯亮,高四位为1故红灯灭)
MOV AL,0F0H OUT DX,AL JMP WATING WRINTVER: MOV AX,0H MOV ES,AX
MOV DI,002CH ;中断向量地址2CH=0BH*4 LEA AX,INTQ3 STOSW ;送偏移地址 MOV AX,0000h STOSW ;送段地址 RET
INTREEUP3:CLI ;中断服务子程序开始 PUSH DX PUSH AX
MOV DX,0FF28H ;中断服务子程序执行红灯亮
MOV AL,0FH ;低四位为1则绿灯灭,高四位为0故红灯亮
OUT DX,AL CALL DELAY1S
7
MOV AL,20H ;OCW2=00100000B非特殊EOI命令,结束命令,用于完全嵌套方式的中断结束
MOV DX,INTPORT1 OUT DX,AL STI ;开系统中断 POP AX POP DX IRET DELAY1S: MOV CX,0FFFFH MOV BX,5 L:DEC CX JNZ L DEC BX JNZ L RET END START 2.
CODE SEGMENT ASSUME CS:CODE ORG 1200H
INTCNT DB 0EFH 8
全局变量
;
INTCNT=11101111B
START: MOV DX,0FF2BH
MOV AL,80H ;设置8255方式字:A口出 OUT DX,AL MOV AL,0FFH MOV DX,0FF28H OUT DX,AL CALL Y2 MOV AL,13H;
ICW1=00010011B,边沿触发、单8259、需ICW4
MOV DX,60H OUT DX,AL MOV AL,08H ;
ICW2=00001000B,IR3(ICW2低两位自动跳变为11,即00001011B)进入则中断号=0BH
MOV DX,61H OUT DX,AL
MOV AL,09H ;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOI
OUT DX,AL
9
10
11
OUT DX,AL
POP CX ;现场恢复 POP DX POP AX
STI ;开系统中断 IRET CODE ENDS END START
七、实验感想
本次实验锻炼的是我们对8259中断控制的理解。我感觉实验程序比较复杂的。主程序的编程重点在于8255和8259的初始化,其工作方式要考虑实验箱的实际接线,控制字的确定也需要仔细对照控制字表,以及中断的执行、恢复;中断部分的编程重点在于中断向量的初始化和中断服务子程序的功能实现以及中断的现场恢复等。通过这两次实验,我更深刻地理解了8259中断控制的工作方式和编程方法,同时也进一步熟悉了8255的工作方式,加深了对理论知识的理解和掌握。
12
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务