求解51单片机延时程序计算(谢谢)

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:31:37
ORG 0050H
DELAY:MOV R5,#04H
DL1:MOV R6,#0FAH
DL2:MOV R7,#0FAH
DJNZ R7,$
DJNE R6,DL2
DJNZ R5,DL1
RET
求每句指令的机器周期,并算出总延时时间。
希望详细点,谢谢啊!

如果晶振是12MHZ的话就是
FAH*FAH*04H us

精确计算耗时时间,可参考一下:
http://zhidao.baidu.com/question/124313481.html

ORG 0050H
DELAY:MOV R5,#04H;a
DL1:MOV R6,#0FAH;b
DL2:MOV R7,#0FAH;c
DJNZ R7,$;d
DJNE R6,DL2;e
DJNZ R5,DL1;f
RET

a:1 b:4 c:4X250 d:250X250X4 e:250X4 f:4
每条指令消耗2个周期,假设每个周期1us(12M晶振)

(1+4+4X250+250X250X4+250X4+4)X2=504018us=504ms

;延时程序的精确时间算法
;本程序所有晶振为12MHz,12周期模式

;定时时间为0.5秒的延时器
nop
LCALL DELAY ;4uS
;执行上句的时间:4+499995+1(ret时间)=0.5秒
NOP

;=======包含LCALL DELAY是0.5秒====
DELAY:
MOV R7,#9 ;1uS
DELAY1:
MOV R6,#128 ;1uS
DELAY2:
MOV R5,#215 ;=215*2=430uS
NOP ;1uS
DJNZ R5,$
;上一句执行完后用时:215*2=430uS
DJNZ R6,DELAY2<