新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)中C語(yǔ)言延時(shí)函數(shù)

單片機(jī)中C語(yǔ)言延時(shí)函數(shù)

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
單片機(jī)C語(yǔ)言延時(shí)程序計(jì)算2009-11-02 22:15單片機(jī)C語(yǔ)言延時(shí)程序用C語(yǔ)言寫(xiě)出來(lái)程序非常的簡(jiǎn)練,它是一種模塊化的語(yǔ)言,一種比匯編更高級(jí)的語(yǔ)言,但是就是這樣一種語(yǔ)言也還是有它不足之處:它的延時(shí)很不好控制,我們常常很難知道一段延時(shí)程序它的精確延時(shí)到底是多少,這和匯編延時(shí)程序沒(méi)法比。但有時(shí)后寫(xiě)程序又不得不要用到比較精確的延時(shí),雖然說(shuō)可以用混合編程的方式解決,但這種方式不是每個(gè)人都能掌握,且寫(xiě)起來(lái)也麻煩。所以,通過(guò)測(cè)試我給大家提供一個(gè)延時(shí)子程序模塊,并以此給一個(gè)出我們經(jīng)常用到的延時(shí)的數(shù)據(jù)表格。(注意:表格中的數(shù)據(jù)只適合我的延時(shí)模塊,對(duì)其他的延時(shí)程序不適用,切忌?。。。。。。。e到時(shí)候延時(shí)不對(duì)來(lái)罵我)

延時(shí)模塊:其中問(wèn)號(hào)代表要填的數(shù),要延時(shí)多少,到表格中去找數(shù)據(jù),然后填上就OK!切忌3條FOR語(yǔ)句不能顛倒順序

本文引用地址:http://butianyuan.cn/article/201611/318536.htm

void Delay()
{
unsigned char a,b,c;
for(a=0;afor(b=0;bfor(c=0;c}

數(shù)據(jù)表如下
//
延時(shí)時(shí)間 a的值 b的值 c的值 延時(shí)誤差(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)

基本上我們平時(shí)用到的延時(shí)都在這里了,每種延時(shí)的誤差都很小,最大也不過(guò)3us,有的甚至沒(méi)有誤差,已經(jīng)很精確了,如果想延時(shí)1秒鐘,你可以連續(xù)調(diào)用延時(shí)250ms的程序4次,總共延時(shí)誤差12us,這樣的誤差已經(jīng)不算誤差了,用匯編語(yǔ)言編寫(xiě)還達(dá)不到這個(gè)程度。

現(xiàn)在你不再為延時(shí)不精確擔(dān)憂(yōu)了,參照表中的數(shù)據(jù)寫(xiě)延時(shí),想延時(shí)多少就能延時(shí)多少。

再次重申:此表格是根據(jù)我的延時(shí)模塊編寫(xiě),這也是大多數(shù)朋友都習(xí)慣用的一個(gè)模塊,如果你用其他模塊或是改動(dòng)了我的模塊,延時(shí)都不準(zhǔn)的,不信大家可以試試!??!



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉