利用8259A中断实现LED灯和数码管显示实验

上传人:大米 文档编号:486902317 上传时间:2022-08-01 格式:DOCX 页数:8 大小:38.59KB
返回 下载 相关 举报
利用8259A中断实现LED灯和数码管显示实验_第1页
第1页 / 共8页
利用8259A中断实现LED灯和数码管显示实验_第2页
第2页 / 共8页
利用8259A中断实现LED灯和数码管显示实验_第3页
第3页 / 共8页
利用8259A中断实现LED灯和数码管显示实验_第4页
第4页 / 共8页
利用8259A中断实现LED灯和数码管显示实验_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《利用8259A中断实现LED灯和数码管显示实验》由会员分享,可在线阅读,更多相关《利用8259A中断实现LED灯和数码管显示实验(8页珍藏版)》请在金锄头文库上搜索。

1、利用8259A中断实现LED灯和数码管显示实验实验三:利用8259A中断实现LED灯和数码管显示实验 安全0901 王宇航 09283020 实验报告 1. 实验目的: 了解8259中断控制器的基本使用,掌握中断程序编程技术。同时使同学掌握中断和其它接口芯片配合来完成某一特定任务的方法。 2. 实验步骤: 8254A的OUT1输出接到8259A的MIR5上,每秒产生一次中断信号向8259A发出中断请求,在中断程序里将连接在8255A口的LED灯按照中断次数二进制点亮。同时在数码管低位上显示中断次数。满10次后停止。 18254A在主程序中初始化。 CLK0工作在方式3,则控制字为0011011

2、0B,计数常数设为1000; CLK1工作在方式3,则控制字为01110110B,计数常数设为1000,则OUT1输出为1HZ的方波。 28255A在使用前需要在主程序中初始化。 A口方式0输出,B口方式0输入,则控制字为10000011B。 38259A不用初始化,但在程序中需要包含以下几个部分: 8259A的MIR5对应的中断向量号为35H,需用此来设置中断入口地址。 设置中断入口地址之后,需设置中断屏蔽字OCW1,使IR5请求被允许,其他请求被禁止。 中断服务程序结束之前写OCW2,送中断结束命令EOI。 4中断服务程序的主要功能是LED指示灯和数码管显示。 图3-1 实验连线图 注意:

3、实验系统的主8259A的片选信号为20H。 3. 实验代码: .Model small .386 DATA SEGMENT DATA0 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH COUNT DB 10 DATA ENDS ;计数值为10 ;分别对应字符0-9 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DATA0 ;DS装入段基址 ;取操作数DATA0的16位偏移地址送到寄存器SI中 ;8254命令口 ;控制字-0通道、方式3(方波发生器)、二进制计数

4、 ;将控制字写入命令口 ;0通道的数据口 ;计数常数=1000 ;先写入低字节 ;8254初始化 MOV DX,203H MOV AL,00110110B OUT DX,AL MOV DX,200H MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL ;再写入高字节 MOV DX,203H ;8254命令口 ;控制字1通道、方式3(方波发生器)、二进制计数 ;1通道的数据口 ;计数常数=1000 MOV AL,01110110B OUT DX,AL MOV DX,201H MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL ;82

5、55初始化 MOV DX,213H ;8255命令口 MOV AL,10000011B ;8255控制字-A口方式0输出,B口方式0输入 OUT DX,AL ;将控制字写入命令口 ;中断入口地址设置(用串指令) CLI ;关中断 MOV AX,0 MOV ES,AX ;置附件段基地址为0 MOV DI,4*35H ;置附件段偏移地址到DI MOV AX,OFFSET INT_35 ;置中断程序首地址的偏移量到AX CLD STOSW STOSW IN AL,21H ;填首地址的偏移量到中断地址表 ;置中断程序的段基地址到AX ;填段基地址到中断地址表 ;读中断屏蔽寄存器IMR ;设置中断屏蔽字

6、OCW1,IR5请求被允许,其他请求被禁止 ;将OCW1写入IMR中 ;开中断 ;判断10次中断是否结束 MOV AX,SEG INT_35 AND AL,11011111B OUT 21H,AL STI WAIT: CMP COUNT,10 JNZ WAIT ;未结束,等待 CLI ;10次中断后,关中断 MOV AH,4CH INT 21H ;延时程序 DELAY PROC ;结束,返回DOS PUSH CX ;保护现场 MOV CX,100H ;延时时间为处理一次CX自减1的时间乘以100H DELAY1: LOOP DELAY1 POP CX RET DELAY ENDP ;中断服务程

7、序 INT_35 PROC PUSH DX PUSH AX PUSH CX CLI ;关中断 MOV AX,DATA MOV DS,AX INC COUNT MOV AL,COUNT ;中断次数加1 ;将中断次数写入AL中 ;8255数据口 ;将中断次数输出到LED显示灯 ;保护现场 ;恢复现场 ;返回到调用处,继续执行 MOV DX,210H OUT DX,AL MOV CX,680H CMP COUNT,10 JB GOON -randomirandom; CMP COUNT,10 JNZ L1 SUB SI,9 L1: ;低于10时跳转到GOON ;不等于10(此处即大于10)时跳转到L

8、1 ;第10次中断时SI减去9,即归0 ;查表,对应0-9 ;地址译码器连接六位数码管电路的数据口 ;数据口 ;指定六位数码管在最低位显示0-9 ;调用延时程序 ;对应字符1 MOV AL,SI MOV DX,220H OUT DX,AL MOV DX,221H OUT DX,AL CALL DELAY MOV AL,00000001B MOV AL,06H MOV DX,220H OUT DX,AL MOV DX,221H MOV AL,00000010B ;指定六位数码管在次低位显示1 OUT DX,AL CALL DELAY ;CX=680H ;SI加1 ;跳转至L ;SI加1 ;查表

9、LOOP L1 INC SI JMP L GOON: INC SI MOV AL,SI MOV DX,220H OUT DX,AL MOV DX,221H MOV AL,00000001B OUT DX,AL L: MOV AL,20H OUT 20H,AL STI POP CX POP AX POP DX IRET INT_35 ENDP ;中断返回 ;写OCW2,送中断结束命令EOI ;开中断 ;恢复现场 CODE ENDS END START 4. 试验流程图: 主程序流程图 开始 中断次数计数值COUNT=10 将字符0-9对应的操作数的偏移地址送入寄存器SI中 8254初始化 8255初始化 中断入口地址设置 设置OCW1并写入IMR中,使只有IR5请求被允许 开中断 COUNT=10? Y 关中断 N 中断服务程序 返回DOS 主程序结束 中断服务程序流程图 保护现场 关中断 COUNT+1COUNT 将中断次数输出到LED显示灯 COUNT10? Y N COUNT=10? N Y SI-9SI SI+1SI 查表,使六位数码管在最低位显示中断次数 查表,使六位数码管在最低位显示中断次数的个位 调用延时程序 使六位数码管在次低位显示1 调用延时程序 CX-1CX CX=0? N Y SI+1SI 写OCW2,送中断结束命令EOI 开中断 恢复现场 中断返回

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号