资源描述:
《利用8259A中断实现LED灯和数码管显示实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验三:利用8259A中断实现LED灯和数码管显示实验安全0901王宇航092830201.实验目的:了解8259中断控制器的基本使用,掌握中断程序编程技术。同时使同学掌握中断和其它接口芯片配合來完成某一特定任务的方法。2.实验步骤:8254A的OUT1输出接到8259A的MIR5上,每秒产生一次中断信号向8259A发出中断请求,在中断程序里将连接在8255A口的LED灯按照中断次数二进制点亮(即中断一次LO亮,中断两次UL亮,中断三次ULLO亮,中断四次L2亮……)。同时在数码管低位上显示中断次数。满10次后停止。1.8254A在主程序中初始化。CLKOI作在方式3,则控制字为001101
2、10B,计数常数设为1000;CLK1I作在方式3,则控制字为01110110B,计数常数设为1000,则OUT1输出为1HZ的方波。2.8255A在使用前需要在主程序屮初始化。A口方式0输出,B口方式0输入,则控制字为lOOOOOUBo3.8259A不用初始化,但在程序屮需要包含以下几个部分:(1)8259A的MIR5对应的中断向量号为35H,需用此來设置中断入口地址。(2)设置中断入口地址之后,需设置中断屏蔽字OCW1,使IR5请求被允许,其他请求被禁止。(3)中断服务程序结束之前写OCW2,送中断结束命令EOI。4.屮断服务程序的主要功能是LED指示灯和数码管显示。MOVAX,DATA
3、MOVDS,AXLEASI,DATAO;8254初始化MOVDX,203HMOVAL,00110110BOUTDX,ALMOVDX,200HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,203HMOVAL,01110110BOUTDX,ALMOVDX,201HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL;8255初始化图3・1实验连线图注意:实验系统的主8259A的片选信号为20H。3.实验代码:.Modelsmall.386DATASEGMENTDATAODB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6
4、FH;分别对应字符0-9COUNTDB10;计数值为10DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:;DS装入段基址;取操作数DATAO的16位偏移地址送到寄存器SI中;8254命令口;控制字-0通道、方式3(方波发生器)、二进制计数;将控制字写入命令口;0通道的数据口;计数常数=1000;先写入低字节;再写入高字节;8254命令口;控制字1通道、方式3(方波发生器)、二进制计数;1通道的数据口;计数常数=1000MOVDXZ213HMOVAL,10000011BOUTDX,ALCLIMOVAX,0MOVES,AXMOVDI,4*35H;825
5、5命令口;8255控制字・・A口方式0输出,B口方式0输入;将控制字写入命令口沖断入口地址设置(用串指令);置附件段基地址为0;置附件段偏移地址到DI;关中断MOVAX,OFFSETINT_35;置中断程序首地址的偏移量到AXCLD;填首地址的偏移量到小断地址表;置屮断程序的段基地址到AX;填段基地址到中断地址表;读中断屏蔽寄存器IMR;设置屮断屏蔽字0CW1,IR5请求被允许,其他请求被禁止;将0CW1写入IMR中;开中断STOSWMOVAX,SEGINT_35STOSWINAL,21HANDAL,H011111BOUT21H,ALSTIWAIT:;判断10次中断是否结束;未结束,等待;1
6、0次屮断后,关屮断;结束,返冋DOSCMPCOUNT10JNZWAITCLIMOVAH,4CHINT21H;延时程序DELAYPROC;保护现场;延时时间为处理一次CX自减1的时间乘以100HPUSHCXMOVCX,100HDELAY1:LOOPDELAY1POPCX;恢复现场RET;返回到调用处,继续执行DELAYENDP;中断服务程序INT_35PROCPUSHDX;保护现场PUSHAXPUSHCXCLI;关中断MOVAX,DATAMOVDSZAXINCCOUNT;中断次数加1MOVACCOUNT;将中断次数写入AL中MOVDX,210H;8255数据口OUTDX,AL;将屮断次数输出到
7、LED显示灯MOVCX,680HCMPCOUNT10JBGOON・randomirandom;CMPCOUNT,10JNZL1SUBSI,9LI:;低于10时跳转到GOON;不等于10(此处即大于10)时跳转到L1;第10次中断时SI减去9,即归0MOVALJSI]MOVDX,220HOUTDX,ALMOVDX,221HMOVALZOOOOOOO1BOUTDX,ALCALLDELAYMOVAL,06HMOVD