收藏 分销(赏)

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

上传人:仙人****88 文档编号:7217525 上传时间:2024-12-28 格式:DOC 页数:7 大小:95.59KB 下载积分:10 金币
下载 相关 举报
利用8259A中断实现LED灯及数码管显示实验.doc_第1页
第1页 / 共7页
利用8259A中断实现LED灯及数码管显示实验.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
实验三:利用8259A中断实现LED灯和数码管显示实验 安全0901 王宇航 09283020 实 验 报 告 1. 实验目的: 了解8259中断控制器的基本使用,掌握中断程序编程技术。同时使同学掌握中断和其它接口芯片配合来完成某一特定任务的方法。 2. 实验步骤: 8254A的OUT1输出接到8259A的MIR5上,每秒产生一次中断信号向8259A发出中断请求,在中断程序里将连接在8255A口的LED灯按照中断次数二进制点亮(即中断一次L0亮,中断两次L1亮,中断三次L1L0亮,中断四次L2亮……)。同时在数码管低位上显示中断次数。满10次后停止。 1.8254A在主程序中初始化。 CLK0工作在方式3,则控制字为00110110B,计数常数设为1000; CLK1工作在方式3,则控制字为01110110B,计数常数设为1000,则OUT1输出为1HZ的方波。 2.8255A在使用前需要在主程序中初始化。 A口方式0输出,B口方式0输入,则控制字为10000011B。 3.8259A不用初始化,但在程序中需要包含以下几个部分: (1)8259A的MIR5对应的中断向量号为35H,需用此来设置中断入口地址。 (2)设置中断入口地址之后,需设置中断屏蔽字OCW1,使IR5请求被允许,其他请求被禁止。 (3)中断服务程序结束之前写OCW2,送中断结束命令EOI。 4.中断服务程序的主要功能是LED指示灯和数码管显示。 图3-1 实验连线图 注意:实验系统的主8259A的片选信号为20H。 3. 实验代码: .Model small .386 DATA SEGMENT DATA0 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;分别对应字符0-9 COUNT DB 10 ;计数值为10 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;DS装入段基址 LEA SI,DATA0 ;取操作数DATA0的16位偏移地址送到寄存器SI中 ;8254初始化 MOV DX,203H ;8254命令口 MOV AL,00110110B ;控制字--0通道、方式3(方波发生器)、二进制计数 OUT DX,AL ;将控制字写入命令口 MOV DX,200H ;0通道的数据口 MOV AX,1000 ;计数常数=1000 OUT DX,AL ;先写入低字节 MOV AL,AH OUT DX,AL ;再写入高字节 MOV DX,203H ;8254命令口 MOV AL,01110110B ;控制字1通道、方式3(方波发生器)、二进制计数 OUT DX,AL MOV DX,201H ;1通道的数据口 MOV AX,1000 ;计数常数=1000 OUT DX,AL MOV AL,AH OUT DX,AL ;8255初始化 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 ;填首地址的偏移量到中断地址表 MOV AX,SEG INT_35 ;置中断程序的段基地址到AX STOSW ;填段基地址到中断地址表 IN AL,21H ;读中断屏蔽寄存器IMR AND AL,11011111B ;设置中断屏蔽字OCW1,IR5请求被允许,其他请求被禁止 OUT 21H,AL ;将OCW1写入IMR中 STI ;开中断 WAIT: CMP COUNT,10 ;判断10次中断是否结束 JNZ WAIT ;未结束,等待 CLI ;10次中断后,关中断 MOV AH,4CH ;结束,返回DOS INT 21H ;延时程序 DELAY PROC PUSH CX ;保护现场 MOV CX,100H ;延时时间为处理一次CX自减1的时间乘以100H DELAY1: LOOP DELAY1 POP CX ;恢复现场 RET ;返回到调用处,继续执行 DELAY ENDP ;中断服务程序 INT_35 PROC PUSH DX ;保护现场 PUSH AX PUSH CX CLI ;关中断 MOV AX,DATA MOV DS,AX INC COUNT ;中断次数加1 MOV AL,COUNT ;将中断次数写入AL中 MOV DX,210H ;8255数据口 OUT DX,AL ;将中断次数输出到LED显示灯 MOV CX,680H CMP COUNT,10 JB GOON -randomirandom; ;低于10时跳转到GOON CMP COUNT,10 JNZ L1 ;不等于10(此处即大于10)时跳转到L1 SUB SI,9 ;第10次中断时SI减去9,即归0 L1: MOV AL,[SI] ;查表,对应0-9 MOV DX,220H ;地址译码器连接六位数码管电路的数据口 OUT DX,AL MOV DX,221H ;数据口 MOV AL,00000001B ;指定六位数码管在最低位显示0-9 OUT DX,AL CALL DELAY ;调用延时程序 MOV AL,06H ;对应字符'1' MOV DX,220H OUT DX,AL MOV DX,221H MOV AL,00000010B ;指定六位数码管在次低位显示1 OUT DX,AL CALL DELAY LOOP L1 ;CX=680H INC SI ;SI加1 JMP L ;跳转至L GOON: INC SI ;SI加1 MOV AL,[SI] ;查表 MOV DX,220H OUT DX,AL MOV DX,221H MOV AL,00000001B OUT DX,AL L: MOV AL,20H ;写OCW2,送中断结束命令EOI OUT 20H,AL STI ;开中断 POP CX ;恢复现场 POP AX POP DX IRET ;中断返回 INT_35 ENDP CODE ENDS END START 4. 试验流程图: 主程序流程图 开始 中断次数计数值COUNT=10 将字符0-9对应的操作数的偏移地址送入寄存器SI中 8254初始化 8255初始化 中断入口地址设置 开中断 COUNT=10? N 中断服务程序 关中断 设置OCW1并写入IMR中,使只有IR5请求被允许 Y 返回DOS 主程序结束 中断服务程序流程图 Y 保护现场 关中断 COUNT+1→COUNT 将中断次数输出到LED显示灯 COUNT<10? COUNT=10? 查表,使六位数码管在最低位显示中断次数的个位 调用延时程序 使六位数码管在次低位显示1 调用延时程序 SI-9→SI N SI+1→SI Y N Y 查表,使六位数码管在最低位显示中断次数 CX-1→CX CX=0? 写OCW2,送中断结束命令EOI SI+1→SI Y N 开中断 恢复现场 中断返回
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服