你
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的灌云網(wǎng)站建設(shè)公司,灌云接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行灌云網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
的程序有問(wèn)題額。
void
daly()
{unsigned
char
j;
for(j=60;j〈=0;j--)
}
你可去看看單片機(jī)的時(shí)鐘信號(hào)產(chǎn)生電路中的有關(guān)
節(jié)拍:指振蕩脈沖周期
狀態(tài):振蕩脈沖盡過(guò)2分頻后,就是單片機(jī)時(shí)鐘信號(hào)的周期,定義為狀態(tài),一個(gè)狀態(tài)等于兩個(gè)節(jié)拍
機(jī)器周期:?jiǎn)纹瑱C(jī)采用定時(shí)控制方式,有固定的機(jī)器周期,一個(gè)機(jī)器周期等于6個(gè)狀態(tài),
機(jī)器周期=6個(gè)狀態(tài)=12個(gè)節(jié)拍
當(dāng)振蕩脈沖頻率為12mhz時(shí),一個(gè)機(jī)器周期為1微秒,振蕩脈沖頻率為6mhz,一個(gè)機(jī)器周期為2微秒
數(shù)據(jù)類(lèi)型中unsigned
char為無(wú)符號(hào)字符型值域是在0~~~255范圍里
在上面我設(shè)的是60次的循環(huán),且晶振是約在12mhz,那么可以看出我們的算值是用60x1微秒,即可得到我們所要的延時(shí)值啊
1)首先要知道你用的是什么C語(yǔ)言?
2)其次要知道你的編程環(huán)境:是在DOS下編程?還是在Windows下編程?還是為嵌入式系統(tǒng)編程?
3)第三步才是找對(duì)應(yīng)的C語(yǔ)言環(huán)境下有沒(méi)有延時(shí)函數(shù)?
4)如果是單線程程序,沒(méi)有可用函數(shù)庫(kù),就編個(gè)循環(huán),在開(kāi)始時(shí)去取系統(tǒng)時(shí)間(時(shí)間以毫秒表示),然后在每次循環(huán)中取當(dāng)前時(shí)間,如果前后時(shí)間差達(dá)到1秒,則退出循環(huán),這個(gè)精度一般不高。
如果更準(zhǔn)確一點(diǎn),通過(guò)時(shí)間中斷器,在時(shí)間達(dá)到1秒后產(chǎn)生中斷,這個(gè)方法精度好一些。
如果是單片機(jī)上,是有可能的
單片機(jī)12M晶振執(zhí)行一條指令1us,所以C語(yǔ)言1us延時(shí)程序 用12M晶振延時(shí)1us,用—_nop_();
#includeintrins.h //頭文件
_nop_(); //這一個(gè)語(yǔ)句表示1us延時(shí)
//***********
微秒延時(shí)函數(shù)
********************************************
void
Delayus(unsigned
int
US)
{
unsigned
i;
US=US*5/4;
//5/4是在8MHz晶振下,通過(guò)軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值
for(
i=0;iUS;i++);
}
//*********************************************************************
以上函數(shù)式根據(jù)AVR單片機(jī)在8MHZ時(shí)鐘頻率下得出的結(jié)果。
如果系統(tǒng)頻率不一樣,就按比例改變。
下面是delay
函數(shù)原型:
原型:
void
Delay(unsigned
int
nDelay)
{
unsigned
int
i,j,k;
for
(
i=0;inDelay;i++
)
for
(
j=0;j6144;j++
)
k++;
}
用法:#include
system.h
功能:短暫延時(shí)
說(shuō)明:延時(shí)msec*4毫秒所以,delay的延遲時(shí)間是和你的cpu時(shí)鐘周期相關(guān)的
C程序中可使用不同類(lèi)型的變量來(lái)進(jìn)行延時(shí)設(shè)計(jì)。經(jīng)實(shí)驗(yàn)測(cè)試,使用unsigned char類(lèi)型具有比unsigned int更優(yōu)化的代碼,在使用時(shí)應(yīng)該使用unsigned char作為延時(shí)變量。 以某晶振為12MHz的單片機(jī)為例,晶振為12MHz即一個(gè)機(jī)器周期為1us。
void delay_ms(unsigned int ms_number) // ms延時(shí)函數(shù) (AT89C51 @ 11.0592MHz)
{
unsigned int i;
unsigned char j;
for(i=0;ims;i++)
{
for(j=0;j200;j++);
for(j=0;j102;j++);
}
}
void Delay()
{
unsigned char a,b,c;
for(a=0;a?;a++)
for(b=0;b?;b++)
for(c=0;c?;c++);
}
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;ims;i++)
{
for(j=0;j200;j++);
for(j=0;j102;j++);
}
}
拓展資料
C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱(chēng)MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
文章題目:C語(yǔ)言延時(shí)1微秒函數(shù) C語(yǔ)言 延時(shí)函數(shù)
當(dāng)前鏈接:http://muchs.cn/article24/hgihje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、服務(wù)器托管、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)