因为, 你不懂汇编, 也不懂 char int long 的判断, 对于 51核 的单片机来说 根本上的区别是什么。
所以,你无法理解 INT 延时 和 long 延时 为什么不是两倍关系。
如果,一定要弄懂,就去补知识, 如果不愿意去补,就把 这个“为什么” 先放一边,只要知道,“就是这样的”。就好了。
你要相对 准确的延时,就用unsigned char 来嵌套,如:
void Delay100us(unsigned char x) // x个 100us @11.0592MHz
{
unsigned char i;
while(--x)
{
i = 43;
while (--i);
}
}
void Delay10ms(unsigned char x) // x 个10ms @11.0592MHz
{
while(--x)Delay100us(100);
}
void Delay1s(unsigned char x) // x 个1s @11.0592MHz
{
while(--x)Delay10ms(100);
}
|