開發板上的8只LED為共陽極連接,即單片機輸出端為低電平時即可點亮LED。 程序A: ;用最直接的方式實現流水燈 ORG 0000H START:MOV P1,#01111111B 最下面的LED點亮 LCALL DELAY;延時1秒 MOV P1,#10111111B 最下面第二個的LED點亮 LCALL DELAY;延時1秒 MOV P1,#11011111B 最下面第三個的LED點亮 (以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B 完成第一次循環點亮,延時約0.25秒 AJMP START 反復循環 ;延時子程序,12M晶振延時約250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式實現流水燈 org 00h 程序上電從00h開始 require.async(['wkcommon:widget/ui/lib/sio/sio.js'], function(sio) { var url = 'https://cpro.baidustatic.com/cpro/ui/c.js'; sio.callByBrowser( url, function () { BAIDU_CLB_fillSlotAsync('u2398768','cpro_u2398768'); } ); }); void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document); ajmp main 跳轉到主程序 org 0030h 主程序起始地址 main: mov a,#0feh 給A賦值成11111110 loop: mov p1,a 將A送到P1口,發光二極管低電平點亮 lcall delay 調用延時子程序 rl a 累加器A循環左移一位 ajmp loop 重新送P1顯示 delay: mov r3,#20 最外層循環二十次 d1: mov r4,#80 次外層循環八十次 d2: mov r5,#250 最內層循環250次 djnz r5,$ 總共延時2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end |