律自己查找,可用实验一中,学过
7
f图221字符串动态显示示意图提示:①本实验应在上面实验的基础上完成。②在数据段,按下列规律设置12个字型码:MESGPOINTDBDW…0000003DH0DCH8CH8CH0EDH0MESG…
POINT单元存放MESG单元的有效地址,程序取出POINT单元的内容→BX,然后用BX地址取数送数码管电路,扫描显示6个字符。每过05s将POINT单元的内容加1,再将POINT单元的内容→BX,。POINT单元内容加1,使字符串显示的首地址向高地址移动一个单元,从而使6位字符串向“左”移动一位,实现动态显示。③动态显示的速度可控制(快或慢),利用实验一读入端口的功能。
三、实验步骤
编写和调试步骤同实验一,不再赘述。
8
f四、程序流程图
图241数码管静态显示程序流程图
9
f图241数码管动态显示程序流程图
五、源代码
6位数码管静态显示:DATASHOWCOUNTSLDATACODESTARTNEXTSEGMENTDB0F4H21H0EDH0DDH39H0DDHEQUSHOWDBENDSSEGMENTMOVAXDATAMOVDSAXMOVCXCOUNTLEABXSHOW显示个数,为6MOVBXOFFSETSHOW
10
210646
ASSUMECSCODEDSDATAsegdata
fMOVSL01HMOVAL80HMOVDX0EE03HOUTDXALAGAINMOVALSLMOVDX0EE01HOUTDXALMOVALBXMOVDX0EE00HOUTDXALMOVAL00HMOVDX0EE00HOUTDXALINCBXSHLSL1LOOPAGAINMOVAH0BHINT21HORALALJZNEXTMOVAH4CHINT21HCODEENDSENDSTART
第一个点亮位置设置输出端口设置标志位为‘1’,A、B口为输出
B口输出数码管选通位置
A口输出数据段数据到数码管
清除显示,防止程序结束残留显示显示下一个数字Sl左移依次向左选通数码管循环此过程COUNT次若键盘有输入则跳出程序
6位数码管动态显示:DATASEGMENTMESGDB0000003DH0DCH8CH8CH0EDH0DATAENDSSTACKSEGMENTSTACKSTACKDB100DUP0STACKENDSCODESEGMENTASSUMEDSDATACSCODESSSTACKMAINPROCFAR
11
fMOVAXDATAMOVDSAXMOVESAXMOVAL80HMOVDX0E803HOUTDXALSTARTMOVBXOFFSETMESGMOVCX07HLOP7MOVDX0EEE0HINALDXINCALANDAL07HXORAHAHMOVDXAXLOOP0CALLDISPDECDXJNZLOOP0INCBXLOOPLOP7JMPSTARTMAINENDPDISPPROCNEARPUSHCXPUSHDXPUSHAXMOVBP0044HLOPXXORSISIMOVCX06HMOVDX0EE00HMOVAH01HLOP6MOVALMESGBXSIOUTDXALMOVALAHMOVDX0EE01HOUTDXAL设置端口为B口选通数码管
12
设置标志位为‘1’,A、B口为输出
从拨码开关左起3位读入数据到DX
DX为外循环次数,控制静态显示时间
显示当前状态直至DX0BX决定显示哪6个数据重新读取拨码开关到DX当7种状态都结束后重新开始
控制一次外循环显示时间
设置端口为A口第一次选通最右数码管显示数据到数码管
fMOVDX0EE00HROLAH1INCSICALLDEr