void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
为什么这种for循环定义的10ms延迟函数是零误差(晶振视为12MHZ)
另外附上汇编代码:
DELAY:
MOV R5,#04H
F3:
MOV R6,#0FFH
F2:
MOV R7,#0FFH
F1:
DJNZ R7,F1
DJNZ R6,F2
DJNZ R5,F3
RET
END |