delay()函數(shù)并百不是標(biāo)準(zhǔn)庫(kù)函數(shù),是編程人員自定義度的一個(gè)函數(shù)(通常是延時(shí)函數(shù)),所以其并不包含問(wèn)在其他頭文件中。下面給出51單片機(jī)中一答個(gè)常見(jiàn)的延時(shí)函內(nèi)數(shù)。
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、白堿灘網(wǎng)站維護(hù)、網(wǎng)站推廣。
頭文件而已,你完全可以自己編寫(xiě)!創(chuàng)建.h文件,把一些你需要的宏定義或者聲明寫(xiě)到里面,然后再main.c里面include它就行了。
delay函數(shù)是一般自己定義的一個(gè)延時(shí)函數(shù)。c語(yǔ)言定義延時(shí)函數(shù)主要通過(guò)無(wú)意義指令的執(zhí)行來(lái)達(dá)到延時(shí)的目的。下面給出一個(gè)經(jīng)典的延時(shí)函數(shù)。
意思就是延遲250ms,250就是100ms延時(shí)子函數(shù)寫(xiě)成1ms的。
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í)變量。
1、單片機(jī)延時(shí)函數(shù)delay的實(shí)現(xiàn)可以通過(guò)內(nèi)部定時(shí)器或外部時(shí)鐘來(lái)實(shí)現(xiàn),一般可以通過(guò)for循環(huán)或while循環(huán)的方式來(lái)實(shí)現(xiàn)。
2、需要延時(shí)的時(shí)候,在程序中帶參數(shù)調(diào)用DelayMs,參數(shù)傳遞給DelayMs的形式參數(shù)“unsigned char t”,t就有了數(shù)值?!皐hile(t--);”執(zhí)行t個(gè)循環(huán)后退出,t個(gè)循環(huán)用了若干時(shí)間。
3、可以有很多辦法,一是調(diào)整參數(shù),使其延時(shí)5分鐘或6分鐘,循環(huán)24次或20次。二是將延時(shí)函數(shù)的形參改為長(zhǎng)整型(32位)延時(shí)時(shí)間擴(kuò)大65536倍。
4、計(jì)算延時(shí)需要的機(jī)器周期。比如采用12M晶振,CPU采用通用8051,那么一個(gè)機(jī)器周期為1US,50毫秒為50*1000=50000US,需要的機(jī)器周期=50000/1=50000。
現(xiàn)在通過(guò)上面兩個(gè)數(shù)據(jù)可以得出:?jiǎn)纹瑱C(jī)每執(zhí)行一次自減所需要的時(shí)間是1/12M *100(s),即1/120000 s,逆向計(jì)算一下,每1ms需要自減多少次?120次對(duì)吧。
delay函數(shù)是一個(gè)自己定義的延時(shí)函數(shù),C語(yǔ)言定義延時(shí)函數(shù)主要通過(guò)無(wú)意義指令的執(zhí)行來(lái)達(dá)到延時(shí)的目,并沒(méi)有一個(gè)軟件自帶頭文件專(zhuān)門(mén)有delay這個(gè)函數(shù)的。
delay函數(shù)是一般自己定義的一個(gè)延時(shí)函數(shù)。c語(yǔ)言定義延時(shí)函數(shù)主要通過(guò)無(wú)意義指令的執(zhí)行來(lái)達(dá)到延時(shí)的目的。下面給出一個(gè)經(jīng)典的延時(shí)函數(shù)。
單片機(jī)中的delay()的單位時(shí)間不是系統(tǒng)提供的,而是用戶(hù)自己編制的。如果用循環(huán)語(yǔ)句實(shí)現(xiàn)的循環(huán),沒(méi)法計(jì)算,但是可以通過(guò)軟件仿真看到具體時(shí)間,但是一般精精確延時(shí)是沒(méi)法用循環(huán)語(yǔ)句實(shí)現(xiàn)的。
X=13000*850/1000000=105; 值此可以推斷,這個(gè)延時(shí)函數(shù)是基于晶振10592MHz的。