单片机晶振12MHZ,延时500us,怎么理解?
DELAY:MOVR6,#47HDL0:MOVR5,#02HDJNZR5,$DJNZR6,DL0RET...
DELAY:
MOV R6,#47H
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
RET 展开
MOV R6,#47H
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
RET 展开
1个回答
展开全部
DELAY:
MOV R6,#47H ;这条指令耗时1个机器周期
DL0:
MOV R5,#02H;这条指令耗时1个机器周期
DJNZ R5,$;这条指令耗时2个机器周期,因为R5等于2,所以一共是2 X 2个机器周期
;加上上一条指令,这两个指令一共耗时5个机器周期
DJNZ R6,DL0;这条指令耗时2个机器周期,R6等于71(16进制的47),
;看一下这71管辖范围是哪里?答案是从MOV R5,#02H;这里开始的
;所以,一共是 (5+2)X 71 = 497个机器周期
RET ;这条指令耗时2个机器周期
所以,一共是 1 + 497 +2 = 500个机器周期
你的单片机是12M,所以一个机器周期是1us,所以一共是500us
MOV R6,#47H ;这条指令耗时1个机器周期
DL0:
MOV R5,#02H;这条指令耗时1个机器周期
DJNZ R5,$;这条指令耗时2个机器周期,因为R5等于2,所以一共是2 X 2个机器周期
;加上上一条指令,这两个指令一共耗时5个机器周期
DJNZ R6,DL0;这条指令耗时2个机器周期,R6等于71(16进制的47),
;看一下这71管辖范围是哪里?答案是从MOV R5,#02H;这里开始的
;所以,一共是 (5+2)X 71 = 497个机器周期
RET ;这条指令耗时2个机器周期
所以,一共是 1 + 497 +2 = 500个机器周期
你的单片机是12M,所以一个机器周期是1us,所以一共是500us
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询