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或者其他软件仿真一下,我以前做延时都这样按指令计算,和仿真结果是一样的,这个结果应该是对的。