單片機中C語言延時函數(shù)
延時模塊:其中問號代表要填的數(shù),要延時多少,到表格中去找數(shù)據(jù),然后填上就OK!切忌3條FOR語句不能顛倒順序
本文引用地址:http://cafeforensic.com/article/201611/318536.htmvoid Delay()
{
unsigned char a,b,c;
for(a=0;a;a++)
for(b=0;b;b++)
for(c=0;c;c++);
}
數(shù)據(jù)表如下
//
延時時間 a的值 b的值 c的值 延時誤差(us)
10us 1 1 1 -0.5
20us 1 1 8 0
30us 1 1 15 +0.5
40us 2 1 9 0
50us 1 1 28 0
60us 1 1 35 +0.5
70us 1 1 42 +1
80us 1 1 48 0
90us 1 1 55 +0.5
100us 1 1 61 -0.5
200us 1 1 128 0
300us 3 1 63 +1.5
400us 2 1 129 0
500us 5 1 63 +0.5
600us 6 1 63 0
700us 7 1 63 -0.5
800us 1 3 175 +0.5
900us 9 1 63 -1.5
1ms 1 3 219 -1.5
2ms 2 3 220 +3
3ms 3 3 220 +3
Xms X 3 220 +3
(X的范圍為2到255)
基本上我們平時用到的延時都在這里了,每種延時的誤差都很小,最大也不過3us,有的甚至沒有誤差,已經(jīng)很精確了,如果想延時1秒鐘,你可以連續(xù)調(diào)用延時250ms的程序4次,總共延時誤差12us,這樣的誤差已經(jīng)不算誤差了,用匯編語言編寫還達不到這個程度。
現(xiàn)在你不再為延時不精確擔(dān)憂了,參照表中的數(shù)據(jù)寫延時,想延時多少就能延時多少。
再次重申:此表格是根據(jù)我的延時模塊編寫,這也是大多數(shù)朋友都習(xí)慣用的一個模塊,如果你用其他模塊或是改動了我的模塊,延時都不準的,不信大家可以試試?。?!
評論