歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

單片機中C語言延時函數

單片機C語言延時程序計算2009-11-02 22:15單片機C語言延時程序用C語言寫出來程序非常的簡練,它是一種模塊化的語言,一種比匯編更高級的語言,但是就是這樣一種語言也還是有它不足之處:它的延時很不好控制,我們常常很難知道一段延時程序它的精確延時到底是多少,這和匯編延時程序沒法比。但有時後寫程序又不得不要用到比較精確的延時,雖然說可以用混合編程的方式解決,但這種方式不是每個人都能掌握,且寫起來也麻煩。所以,通過測試我給大家提供一個延時子程序模塊,並以此給一個出我們經常用到的延時的數據表格。(注意:表格中的數據只適合我的延時模塊,對其他的延時程序不適用,切忌!!!!!!!!別到時候延時不對來罵我)

延時模塊:其中問號代表要填的數,要延時多少,到表格中去找數據,然後填上就OK!切忌3條FOR語句不能顛倒順序

void Delay()
{
unsigned char a,b,c;
for(a=0;a<?;a++)
for(b=0;b<?;b++)
for(c=0;c<?;c++);

                                                       數據表如下
/**********************************************************************************************************************/
延時時間           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,有的甚至沒有誤差,已經很精確了,如果想延時1秒鐘,你可以連續調用延時250ms的程序4次,總共延時誤差12us,這樣的誤差已經不算誤差了,用匯編語言編寫還達不到這個程度。

現在你不再為延時不精確擔憂了,參照表中的數據寫延時,想延時多少就能延時多少。

再次重申:此表格是根據我的延時模塊編寫,這也是大多數朋友都習慣用的一個模塊,如果你用其他模塊或是改動了我的模塊,延時都不准的,不信大家可以試試! 

Copyright © Linux教程網 All Rights Reserved