㈠ at89c51單片機怎麼用匯編語言寫「多個延時程序」
單片機匯編語言中要使一個延時程序可以被不同情況下調用而延時不同的時間,可以通過類似於C語言中傳遞參數的方式來實現,舉例如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P0,#5AH ;P0上的LED燈間隔點亮
MOV R7,#50 ;R7是延時傳遞參數
LCALL DELAY ;調用延時函數
MOV P0,#0A5H ;P0上LED燈另一半點亮
MOV R7,#100 ;延時時間加長
LCALL DELAY
MOV P0,#00H ;LED等全部點亮
MOV R7,#150 ;延時再次加長
LCALL DELAY
MOV P0,#0FFH ;燈滅
MOV R7,#200 ;延時時間再次加長
LCALL DELAY
SJMP MAIN ;循環
DELAY:
MOV R2,#100
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
DJNZ R7,DELAY ;R7是調用前賦值的傳遞參數。
RET
END
㈡ 單片機用匯編寫兩個數碼管顯示0到99循環的程序
1、新建項目,做好准備。
㈢ 用單片機匯編一個100ms的延時程序
DELAY:
MOV R3,#100 ;2
DLY0:
MOV R2,#249 ;2*100
DLY1:
DJNZ R2,DLY1 ;249*2*100
MOV R2,#248 ;2*100
DLY2:
DJNZ R2,DLY2 ;248*2*100
DJNZ R3,DLY0 ;2*100
RET ;2
以上假設12M晶振,延時共2+(249*2+2+248*2)*100+2=100004微妙內容=100.004毫秒