void DelayUsx2(unsigned int t)
{
while(--t);
}
这是我写的代码,可是仿真时候把KEIL的频率设成12Mhz以后,t每减少1,消耗时间为8us,查它的汇编为
C:0x001B EF MOV A,R7
C:0x001C 1F DEC R7
C:0x001D 7001 JNZ C:0020
C:0x001F 1E DEC R6
C:0x0020 14 DEC A
C:0x0021 4E ORL A,R6
C:0x0022 70F7 JNZ DelayUsx2(C:001B)
15: }
可是,我用别人写的例子,程序一样,仿真时12Mhz下,t每减少一,消耗时间却为2us,查其汇编却是:
C:0x003F DFFE DJNZ R7,DelayUs2x(C:003F)
54: }
这是为什么呢?
同样的语句,汇编结果为什么不一样呢?这样导致了延时时间的计算也不一样啊!
求助原理解释! |