文档介绍:ledequp1 ;00hajmphead;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;org0030hhead:movsp,#70hmovdptr,#led_on_tabclramovr2,#0begin:calladd_oncalldec_offsjmpbegin;;;;;;;;;;;;;;;;;;;;;;;;;;;按点亮led灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;led_on: mova,r2movca,***@a+dptrmovled,alcalldelay_200msret;;;;;;;;;;;;;;;;;;;;;;;;;;;实现小灯逐个点亮的移位逻辑;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;add_on: acallled_onincr2cjner2,#9,add_onmovr2,#7ret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;实现小灯逐个熄灭的移位逻辑;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;dec_off: acallled_ondecr2cjner2,#0,dec_offret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;led_on_tab:DB255,254,252,248,240,224,192,128,0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_200ms:movr5,#20signed_200ms_:acalldelay_10msdjnzr5,signed_200ms_ret;;;;;;;;;;;;;;;;;非中断精确1MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_1ms: MOVR7,#249signed: ;循环部分4机器周期nop nopdjnzR7,signedret ;返回指令2机器周期;2+249*4+2=1000us可以精确定时1MS,假设外部晶振是12M;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确10MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_10ms:movr6,#9 ;2个机器周期用2usdelay_10ms_sined: ;9次循环共用9(1ms+4us)=9036usacalldelay_1msdjnzr6,delay_10ms_sinedMOVr6,#240 ;2个机器中期用2ussigned_10ms : ;循环部分4机器周期共240次nop nopdjnzr6,signed_10