mov r2,#200 1
dly:
mov r3,#249 1*200
djnz r3,$ 2*249*200
mov r3,#249 1*200
djnz r3,$ 2*249*200
mov r3,#249 1*200
djnz r3,$ 2*249*200
djnz r2,dly 2*200
ret 2
total:1+3*(200+2*249*200)+200+2=299803us
这是调用一个延时10毫秒的延时子程序 当然,子程序的名运裂告字可旁明以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了
DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET
这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了
DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET
RETRET的作用是子程序返回。调用一个子程序,当单片机执行到RET语句的时候,单片机就会返回到调用的地方并继续向下执行。
下面给你一个例程:
闪烁源羡灯
ORG 00H
AJMP START
ORG 30H
START:
MOV P0,#00H
LCALL DELY调用延时子程序
MOV P0,#0FFH
LCALL DELY调用延时子程序
AJMP START
DELY:
MOV R7,#250
DL1:MOV R6,#250
DJNZ R6,$
DJNZ R7,DL1
RET
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)