delay函數(shù)的作用(延時(shí)函數(shù)到底怎么寫)
- 夕逆IT
- 數(shù)據(jù)庫(kù)
- 2023-08-13
- 371
其實(shí)delay函數(shù)的作用的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解延時(shí)函數(shù)到底怎么寫,因此呢,今天小編就來(lái)為大家分享delay函數(shù)的作用的一些知識(shí),希望可以幫助到大家,...
其實(shí)delay函數(shù)的作用的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解延時(shí)函數(shù)到底怎么寫,因此呢,今天小編就來(lái)為大家分享delay函數(shù)的作用的一些知識(shí),希望可以幫助到大家,下面我們一起來(lái)看看這個(gè)問(wèn)題的分析吧!
delay延時(shí)函數(shù)計(jì)算公式
DelayMS(300)表示希望系統(tǒng)delay300毫秒,系統(tǒng)有自己的RTC,根據(jù)硬件的晶振(Hz)可以計(jì)算出一次振蕩大約多少耗時(shí),這樣就能大約算出1ms需要多少次振蕩;
簡(jiǎn)單比喻一次振蕩需要1us,那1ms就是1000次振蕩,300ms就是300x1000次振蕩,這樣就能大概的計(jì)算出300msdelay;
這得看你的CPU運(yùn)行一條指令得多久,像單片機(jī)89C51一般一條1us。
C語(yǔ)言是一門通用計(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ī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái);
二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的國(guó)際標(biāo)準(zhǔn)語(yǔ)法,稱為ANSIC,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。
延遲算法應(yīng)用
1.軟件延時(shí)
利用多個(gè)指令的執(zhí)行來(lái)延時(shí),累加每個(gè)指令的運(yùn)行時(shí)間,來(lái)計(jì)算出延時(shí)的總時(shí)間。一般寫成一個(gè)延時(shí)函數(shù)。
如,以下是10ms軟件延時(shí)。
delay_10ms(){
intc=1000;//調(diào)整常數(shù),以達(dá)到要求的延時(shí),但很難!
while(c!=0){
c--;
}
}
以上函數(shù)被調(diào)用一次,就延時(shí)10ms,多次調(diào)用可以達(dá)到任意更大的時(shí)間要求。
!但是,在延時(shí)時(shí),就其它什么事也做不了了,就是干等?。?/p>
2.硬件延時(shí)
利用定時(shí)器/計(jì)數(shù)器芯片,或用微控制器內(nèi)部的定時(shí)器/計(jì)數(shù)器,實(shí)際上,它就是對(duì)晶振的分頻(分頻系數(shù)可編程設(shè)置),得到一個(gè)精確的低頻的周期信號(hào),用這個(gè)周期信號(hào)(比如10ms)去觸發(fā)中斷,每10ms調(diào)用一次定時(shí)中斷服務(wù)程序。在定時(shí)中斷服務(wù)程序中加入計(jì)數(shù)變量,就可以得到任意的定時(shí)了。
在10ms沒(méi)有到時(shí),微控制器可以運(yùn)行其它程序,10ms到時(shí)再自動(dòng)進(jìn)去中斷服務(wù)程序以處理定時(shí)任務(wù),不會(huì)像軟件延時(shí)阻塞了。
3.操作系統(tǒng)中,都有個(gè)硬件延時(shí),和定時(shí)中斷,可以看ucosii中的源碼,節(jié)拍時(shí)鐘,和匯編語(yǔ)言實(shí)現(xiàn)的定時(shí)中斷。
4.硬件延時(shí),要占用一個(gè)定時(shí)器/計(jì)數(shù)器硬件資源。
delay函數(shù)怎么使用來(lái)延長(zhǎng)時(shí)間
delay函數(shù)使用來(lái)延長(zhǎng)時(shí)間如下:
voiddelay(){uinti;for(i=0;i<20000;i++);}我們?cè)趺磥?lái)算呢,先將20000轉(zhuǎn)成16進(jìn)制,得到4E20,就是每一位16進(jìn)制相當(dāng)于四位二進(jìn)制。
延時(shí)函數(shù)各參數(shù)意義
voiddelay(unsignedmilliseconds);將程序的執(zhí)行暫停一段時(shí)間(毫秒)(該函數(shù)是TC下特有的函數(shù),VC下應(yīng)使用Sleep()函數(shù))
cpu延時(shí)函數(shù)
存在延時(shí)函數(shù)。因?yàn)樵谝恍﹫?chǎng)合下,需要CPU暫停一段時(shí)間后再繼續(xù)執(zhí)行下一條指令,即需要實(shí)現(xiàn)延時(shí)的功能。CPU可以通過(guò)循環(huán)等待、硬件計(jì)時(shí)器和軟件定時(shí)器等方式實(shí)現(xiàn)延時(shí)函數(shù)。如果需要更精確的延時(shí)控制,可以使用專門的定時(shí)器設(shè)備或高級(jí)編程語(yǔ)言提供的延時(shí)函數(shù)庫(kù)。
簡(jiǎn)單的延時(shí)函數(shù)
最簡(jiǎn)單的延時(shí)函數(shù)為x(t-h),這里t為時(shí)間,h為延時(shí)。
關(guān)于delay函數(shù)的作用和延時(shí)函數(shù)到底怎么寫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
本文鏈接:http:///su/1427.html