因為, 你不懂匯編, 也不懂 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);
}
|