资源描述:
《微机课设流水风程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、8255设控制字为10000010B,8254设控制字为36H8254定时器0置初值,周期为10ms的方波8254设控制字为50H开始显示提示信息Y有按键?依次点亮2个小灯从两边向中间点亮有按键?下?有按键?下?从左向右一次点亮小灯有按键?下?有按键?下?有按键?下?从中间向两边点亮从左向右在从右向左点亮有按键?下?从两边向中间在从中间向两边点亮结束有按键?下?有按键?下?水滴类型点亮小灯水滴类型点亮小灯NYNYNYNYNYYNN有按键按下?N从两边向中间点亮有按键按下?NYY1、二极管按照红、绿
2、、黄的顺序依次闪烁,数码管显示02、二极管按由左至右的顺序依次闪烁,数码管显示13、二极管按由两边到中间的顺序依次闪烁,数码管显示24、二极管按由中间到两边的顺序依次闪烁,数码管显示35、二极管按先由左至右再由右至左往返的顺序依次闪烁,数码管显示46、二极管按先由两边到中间再由中间到两边的顺序依次闪烁,数码管显示57、二极管按照水滴形成的规律从左到右依次闪烁,数码管显示68、二极管两红灯闪3次,两黄灯亮,再两绿灯亮,最后全亮,数码管显示79、上述过程执行完后,自动跳回第1种状态DATASEGMEN
3、T;定义数据段IOPORTEQU0D880H-280HIO8255AEQUIOPORT+280H;定义8255A端口地址IO8255BEQUIOPORT+281H;定义8255B端口地址IO8255CEQUIOPORT+282H;定义8255C端口地址IO8255TEQUIOPORT+283H;定义8255控制端口地址IO82540EQUIOPORT+288H;定义8254计数器0地址IO82541EQUIOPORT+289H;定义8254计数器1地址IO8254KEQUIOPORT+28BH;给
4、8254写控制字BUF1DB?;给BUF1字节空间BUF2DB?;给BUF2字节空间BUF3DB?;给BUF3字节空间BUF4DB?;给BUF4字节空间MESSDB'ENTERANYKEYCANEXITTODOS!',0DH,0AH,'$';提示信息DATAENDS;数据段结束STACKSEGMENTSTACK;定义堆栈段STADW50DUP(?);给STA50个字空间TOPEQULENGTHSTA;TOP=STA的长度STACKENDS;堆栈段结束CODESEGMENT;定义代码段ASSUMEC
5、S:CODE,DS:DATA,ES:DATA,SS:STACK;将段基址装入段寄存器START:MOVAX,DATA;数据段段基址装入DSMOVDS,AXMOVES,AX;数据段段基址装入ESMOVAH,09H;显示字符MOVDX,OFFSETMESS;MESS的偏移地址赋给DXINT21H;退出START1:MOVDX,IO8255T;8255控制端口给DXMOVAL,10000010B;控制字写入8255控制端口OUTDX,ALMOVDX,IO8254K;8254控制字给DXMOVAL,36H
6、;控制字36H写入8254K端口OUTDX,ALMOVDX,IO82540;8254计数器0给DXMOVAX,10000;控制字写入计数器0低4位OUTDX,ALNOP;延时NOPMOVAL,AH;AH给ALOUTDX,AL;控制字写入计数器0高4位MOVDX,IO8254K;8254端口K给DXMOVAL,50H;控制字50H写入8254K端口OUTDX,ALFIRST:PUSHDX;DX入栈MOVAH,06H;检测键盘是否有键按下MOVDL,0FFHINT21HPOPDX;DX出栈JEK1;无
7、键按下,转到K1MOVAH,4CH;返回DOS操作系统INT21HK1:MOVDX,IO8255A;8255A端口给DXMOVAL,3FH;控制字3FH写入8255A端口OUTDX,ALMOVDX,IO8255C;8255C端口给DXMOVAL,10010000B;控制字写入8255C端口,两红灯亮OUTDX,ALCALLDELAY10;调用延迟MOVAL,01001000B;两黄灯亮OUTDX,ALCALLDELAY10;调用延迟MOVAL,00100100B;两绿灯亮OUTDX,ALCALLD
8、ELAY10;调用延迟MOVAH,06H;检测键盘是否有键按下MOVDL,0FFHINT21HJNZPPP;有键按下,转到PPPK2:MOVDX,IO8255A;8255A端口给DXMOVAL,06H;控制字06H写入8255A端口OUTDX,ALMOVDX,IO8255C;8255C端口给DXMOVAL,10000000B;第一个红灯亮OUTDX,ALCALLDELAY10;调用延迟MOVAL,01000000B;第一个黄灯亮OUTDX,ALCALLDELAY10;调用延迟MOV