单片机,这个程序延迟多少秒,运行多少机器周期?

TIMER:MOV R3,#04HMOV R4,#00HMOV R5,#00HTIMERLOOP:DJNZ R5,TIMELOOPDJNZ R4,TIMELOOPDJNZ R3,TIMELOOPRET12MHZ 晶振。 一个机器周期1us
2026年09月24日 17:01
有1个网友回答
网友(1):

TIMER:
MOV R3,#04H ; 1
MOV R4,#00H ; 1
MOV R5,#00H ; 1
TIMERLOOP:
DJNZ R5,TIMELOOP ; 2 第一个循环
DJNZ R4,TIMELOOP ; 2 第二个循环
DJNZ R3,TIMELOOP ; 2 第三个循环
RET ; 2

执行第一个循环花费机器周期:2*256;
执行第二个循环(包括第一个循环)花费机器周期:(2*256+2)*256;
执行第三个循环(包括前两个循环)花费机器周期:((2*256+2)*256+2)*4;

所以总共运行机器周期:1+1+1+((2*256+2)*256+2)*4+2 =

(前面三个1是mov指令,后边一个2是ret指令,结果自己算算就知道了)

对不对可以在keil或者其他软件仿真一下,我以前做延时都这样按指令计算,和仿真结果是一样的,这个结果应该是对的。