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

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

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用8259A中断实现LED灯和数码管显示实验

实验三:利用8259A中断实现LED灯和数码管显示实验安全0901 王宇航验报告实验目的:了解8259中断控制器的基本使用,掌握中断程序编程技术。同时使同学掌握中断和其它接口芯片配合来完成某一特定任务的方法。实验步骤:8254A的OUT1输出接到8259A的MIR5上,每秒产生一次中断信号向8259A发出中断请求,在中断程序里将连接在8255A口的LED灯按照中断次数二进制点亮(即中断一次L0亮,中断两次L1亮,中断三次L1L0亮,中断四次L2亮……)。同时在数码管低位上显示中断次数。满10次后停止。1.8254A在主程序中初始化。CLK0工作在方式3,则控制字,计数常数设为1000;CLK1工作在方式3,则控制字,计数常数设为1000,则OUT1输出为1HZ的方波。2.8255A在使用前需要在主程序中初始化。A口方式0输出,B口方式0输入,则控制字。3.8259A不用初始化,但在程序中需要包含以下几个部分:(1)8259A的MIR5对应的中断向量号为35H,需用此来设置中断入口地址。(2)设置中断入口地址之后,需设置中断屏蔽字OCW1,使IR5请求被允许,其他请求被禁止。(3)中断服务程序结束之前写OCW2,送中断结束命令EOI。4.中断服务程序的主要功能是LED指示灯和数码管显示。图3-1 实验连线图注意:实验系统的主8259A的片选信号为20H。实验代码:.Model small.386DATASEGMENTDATA0 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;分别对应字符0-9COUNT DB 10;计数值为10DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;DS装入段基址LEA SI,DATA0;取操作数DATA0的16位偏移地址送到寄存器SI中;8254初始化MOV DX,203H;8254命令口MOV AL;控制字--0通道、方式3(方波发生器)、二进制计数OUT DX,AL;将控制字写入命令口MOV DX,200H;0通道的数据口MOV AX,1000;计数常数=1000OUT DX,AL;先写入低字节MOV AL,AH OUT DX,AL;再写入高字节MOV DX,203H;8254命令口MOV AL;控制字1通道、方式3(方波发生器)、二进制计数OUT DX,ALMOV DX,201H;1通道的数据口MOV AX,1000;计数常数=1000OUT DX,AL MOV AL,AH OUT DX,AL;8255初始化MOV DX,213H;8255命令口MOV AL;8255控制字--A口方式0输出,B口方式0输入OUT DX,AL;将控制字写入命令口;中断入口地址设置(用串指令)CLI;关中断MOV AX,0MOV ES,AX;置附件段基地址为0MOV DI,4*35H;置附件段偏移地址到DIMOV AX,OFFSET INT_35;置中断程序首地址的偏移量到AXCLDSTOSW;填首地址的偏移量到中断地址表MOV AX,SEG INT_35;置中断程序的段基地址到AXSTOSW;填段基地址到中断地址表IN AL,21H;读中断屏蔽寄存器IMRAND AL;设置中断屏蔽字OCW1,IR5请求被允许,其他请求被禁止OUT 21H,AL;将OCW1写入IMR中STI;开中断WAIT:CMP COUNT,10;判断10次中断是否结束JNZ WAIT ;未结束,等待CLI;10次中断后,关中断MOV AH,4CH;结束,返回DOSINT 21H;延时程序DELAY PROC PUSH CX;保护现场 MOV CX,100H;延时时间为处理一次CX自减1的时间乘以100HDELAY1: LOOP DELAY1 POP CX;恢复现场 RET;返回到调用处,继续执行DELAY ENDP;中断服务程序INT_35PROCPUSH DX;保护现场PUSH AXPUSH CXCLI;关中断MOV AX,DATAMOV DS,AXINC COUNT;中断次数加1MOV AL,COUNT;将中断次数写入AL中MOV DX,210H;8255数据口OUT DX,AL;将中断次数输出到LED显示灯MOV CX,680H CMP COUNT,10JB GOON

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档