

下麵我們來完成軟件編程設計,這裏我們沒有采用高深的編程技巧,而是用了最笨、最直接的向端口送數的辦法來實現,一來程序比較簡單,沒必要玩深沉,而且初學者看起來直觀易懂。
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
這是上麵程序匯編以後獲得的編程器燒寫文件:
如何精確計算延時子程序的執行時間?
匯編語言的一大優勢就是能夠精確控製程序的執行時間,這在編寫一些對時序要求嚴格的外圍器件驅動時由為重要!
