实验六 8259中断控制(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
星期二1-2节序号:1
实验六8259中断控制(1)
12120771 易远明
一、电路图
二、程序框图
三、实验程序及注释
ASSUME CS:CODE
INTPORT1 EQU 0060H
INTPORT2 EQU 0061H
INTQ3 EQU INTREEUP3
INTCNT DB ?
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则绿灯亮,高四位为1故红灯灭)MOV AL,0F0H
OUT DX,AL
JMP WA TING
WRINTVER:
MOV AX,0H
MOV ES,AX
MOV DI,002CH ;中断向量地址2CH=0BH*4
LEA AX,INTQ3
STOSW ;送偏移地址
MOV AX,0000h
STOSW ;送段地址
RET
INTREEUP3:CLI ;中断服务子程序开始
MOV DX,0FF28H ;中断服务子程序执行红灯亮
MOV AL,0FH ;低四位为1则绿灯灭,高四位为0故红灯亮
OUT DX,AL
CALL DELAY1S
MOV AL,20H ;OCW2=001 00 000B非特殊EOI命令,结束命令,用于完全嵌套方式的中断结束
MOV DX,INTPORT1
OUT DX,AL
STI ;开系统中断
IRET
DELAY1S:
MOV CX,0FFFFH
MOV BX,5
L:DEC CX
JNZ L
DEC BX
JNZ L
RET
CODE ENDS
END START
四、实验结果
运行程序后,绿色LED灯点亮,按下AN开关按钮,应当红色LED灯亮,绿色LED 灯灭,过一会儿红灯熄灭了,绿灯又亮了起来。
六、调试过程:
1. 按连线图连接好,检查无误后打开实验箱电源。
2. 在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。
3. 运行程序后,绿色LED灯点亮表面程序运行在主程序。按下AN开关按钮,应当红色LED灯亮,绿色LED灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。
4. 如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。
七、心得体会:
通过本次实验,我对中断的的过程有了更加深入的认识,清楚了8259中断控制的原理。编程能力也有了一些提高。