汇编指令延时的精确解释

来源:百度知道 编辑:UC知道 时间:2024/06/13 22:33:32
机器周期是1us
DELAY:
MOV R7,#200
DLY1:
MOV R6,#123
NOP
DLY2:
DJNZ R6,DLY2 ;2*123+2=248us
DJNZ R7,DLY1 ;(248+2)*200+1=50.001ms
RET
请问:+2us是哪个指令的(额外的DJNZ还是NOP+MOV),下行+1同问。
请解释清楚!

2*123+2=248us中,的+2即分别是指令MOV R6,#123 和指令NOP各一秒,即是所内循环。
(248+2)*200+1=50.001ms 中+2即是指令DJNZ R7,DLY1的用时,(248+2)*200即外循环,最后那个+1即指令MOV R7,#200的用时,不是RET的用时。我也喜欢单片机有时间交流下我的QQ是379078553

DELAY: MOV R7,#200 ;单周期指令1us,时间1us
DLY1: MOV R6,#123;单周期指令1us ,时间200*1us
NOP ;单周期指令1us ,时间200*1us
DLY2: DJNZ R6,DLY2 ;双周期指令2us,时间123*200*2us
DJNZ R7,DLY1 ;双周期指令2us,时间200*2us
RET ;单周期指令1us,时间1us
总共延时时间为:
T=1us+200*1us+200*1us+123*200*2us+200*2us+1us
=50012us
=50.012ms

第一:+2us是MOV R6,#123 和NOP 各占1us,2*123+2=248us 是从DLY1开始到DJNZ R6,DLY2 这句的时间。
第二:+1us是第一句DELAY: MOV R7,#200的时间,(248+2)*200+1=50.001ms是从第一句到最后的总时间。