开发板上的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 |