4只LED為共陽極連線,即微控制器輸出端為低電平時即可點亮LED。
;用最直接的方式實現流水燈
ORG 0000H
START:MOV P1,#01111111B ;最下面的LED點亮
LCALL DELAY ;延時60秒
MOV P1,#10111111B ;最下面第二個的LED點亮
MOV P1,#11011111B ;最下面第三個的LED點亮 (以下省略)
LCALL DELAY
MOV P1,#11101111B
MOV P1,#11110111B
MOV P1,#11111011B
LCALL DELAY ;完成第一次迴圈點亮,延時約0.25秒
AJMP START ;反覆迴圈
;延時子程式,12M晶振延時約250毫秒
DELAY: ;大約值:2us*256*256*2=260ms,也可以認為為250ms
PUSH PSW ;現場保護指令(有時可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2 ;最內層迴圈:(256次)2個週期指令(R3減一,如果比1大,則轉向L2)
DJNZ R2 ,L1 ; 中層迴圈:256次
DJNZ R4 ,L3 ;外層迴圈:240次
POP PSW
RET
END
4只LED為共陽極連線,即微控制器輸出端為低電平時即可點亮LED。
;用最直接的方式實現流水燈
ORG 0000H
START:MOV P1,#01111111B ;最下面的LED點亮
LCALL DELAY ;延時60秒
LCALL DELAY ;延時60秒
MOV P1,#10111111B ;最下面第二個的LED點亮
LCALL DELAY ;延時60秒
LCALL DELAY ;延時60秒
MOV P1,#11011111B ;最下面第三個的LED點亮 (以下省略)
LCALL DELAY
LCALL DELAY ;延時60秒
MOV P1,#11101111B
LCALL DELAY
LCALL DELAY ;延時60秒
MOV P1,#11110111B
LCALL DELAY
LCALL DELAY ;延時60秒
MOV P1,#11111011B
LCALL DELAY ;延時60秒
LCALL DELAY ;延時60秒
LCALL DELAY ;延時60秒
LCALL DELAY ;延時60秒
LCALL DELAY ;完成第一次迴圈點亮,延時約0.25秒
AJMP START ;反覆迴圈
;延時子程式,12M晶振延時約250毫秒
DELAY: ;大約值:2us*256*256*2=260ms,也可以認為為250ms
PUSH PSW ;現場保護指令(有時可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2 ;最內層迴圈:(256次)2個週期指令(R3減一,如果比1大,則轉向L2)
DJNZ R2 ,L1 ; 中層迴圈:256次
DJNZ R4 ,L3 ;外層迴圈:240次
POP PSW
RET
END