<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > c51的精確延時(shí)

c51的精確延時(shí)

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
用c語(yǔ)言為單片機編程無(wú)疑十分節約時(shí)間,可在很短的時(shí)間內開(kāi)發(fā)出較高效的代碼,對于程序的維護和擴充也較匯編語(yǔ)言方便許多。

但c語(yǔ)言也有它的不足之處,那就是在時(shí)間的精確控制上。要想用c實(shí)現精確的延時(shí),只能把c的函數編譯成匯編語(yǔ)言,然后按照匯編語(yǔ)言計算其執行時(shí)間。本人就按照這種方法,編寫(xiě)了幾個(gè)51單片機的c語(yǔ)言精確延時(shí)函數。

本文引用地址:http://dyxdggzs.com/article/201611/322200.htm

注:1.編譯軟件為"Keil uVision3"(Keil uVision2也試用)。用其他編譯軟件的話(huà)就不準了。

2.需要包含頭文件

3.所有函數的延時(shí)時(shí)間都是在12Mhz晶振下計算的,如用其他晶振需進(jìn)行換算。

4.函數的執行時(shí)間為“函數的參數”乘以精確到的時(shí)間。例如delayms(unsigned char n)函數,其精確度為1ms,如果寫(xiě)入語(yǔ)句delayms(4),那就是延時(shí)4ms。

5.計算出來(lái)的延時(shí)時(shí)間不包括函數調用與返回的時(shí)間。如果函數的精確度較高,且參數較小,那么實(shí)際延時(shí)時(shí)間就可能與計算的時(shí)間差很遠。

(1)精確到2us的延時(shí)(12MHz)

void delayus(unsigned char n)

{ while(--n);

}

(2)精確到100us的延時(shí)(12MHz)

void delay100us(unsigned char n)

{ unsigned char i;
for(;n;n--)
{ _nop_();
for(i=46;i;i--);
}
}

(3)精確的半毫秒延時(shí)函數(12MHz)

void delay1_2ms(unsigned char n)

{ unsigned char i;
for(;n!=0;n--)
{ _nop_();
for(i=246u;i!=0;i--);
}
}

(4)精確的毫秒延時(shí)函數(12MHz)

void delayms(unsigned char n)

{ unsigned char i;
for(;n!=0;n--)
{ for(i=248u;i!=0;i--);
for(i=248u;i!=0;i--);
}
}



關(guān)鍵詞: c51精確延

評論


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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>