c語言延遲時(shí)間怎么算的
各位老鐵們好,相信很多人對c語言延遲時(shí)間怎么算的都不是特別的了解,因此呢,今天就來為大家分享下關(guān)于c語言延遲時(shí)間怎么算的以及c語言怎么延遲輸出的問題知識,還望可以幫助大...
各位老鐵們好,相信很多人對c語言延遲時(shí)間怎么算的都不是特別的了解,因此呢,今天就來為大家分享下關(guān)于c語言延遲時(shí)間怎么算的以及c語言怎么延遲輸出的問題知識,還望可以幫助大家,解決大家的一些困惑,下面一起來看看吧!
文章目錄:
- 1、C語言delay延時(shí)時(shí)間怎么算,說的詳細(xì)點(diǎn)謝謝
- 2、請問下面的C語言延時(shí)函數(shù)是如何計(jì)算延時(shí)時(shí)間的?for循環(huán)中的四個(gè)nop是...
- 3、在c語言中如何實(shí)現(xiàn)延時(shí)功能?
- 4、如何用C語言實(shí)現(xiàn)延時(shí)功能?
- 5、C語言延遲時(shí)間,我的是12M晶振,這個(gè)程序的延遲時(shí)間到底是多少?_百度...
- 6、C語言用while的延遲的時(shí)間
C語言delay延時(shí)時(shí)間怎么算,說的詳細(xì)點(diǎn)謝謝
1、一般cpu主頻確定了之后,每秒中運(yùn)行的指令數(shù)也就確定了,而循環(huán)延時(shí)是做自減運(yùn)算,這個(gè)運(yùn)算在一般情況下是單指令周期完成的,那么根據(jù)你循環(huán)要做多少次減法乘以每條指令周期得到延時(shí)的約值,其他調(diào)用函數(shù)參數(shù)入棧、賦值、斷這些一般是固定值,可以先不考慮計(jì)算在內(nèi)了。
2、單片機(jī)的延時(shí)程序通過指令來達(dá)到延時(shí)效果,這個(gè)時(shí)間等于的指令需要的時(shí)間,而一個(gè)指令需要的時(shí)間叫做指令周期,這個(gè)時(shí)間等于若干個(gè)機(jī)器周期。
3、用KEIL可以計(jì)算時(shí)間,將while的起始位置和終止位置加紅點(diǎn)(雙擊即可);然后左側(cè)的SEC后面的就是的時(shí)間。
4、C語言的時(shí)間,從來就沒有計(jì)算公式。C程序的時(shí)間,和操作有很大的關(guān)系,和編譯也有關(guān),在單片機(jī)中,更和變量的存儲類型有關(guān)(如單字節(jié)變量、兩字節(jié)變量)。因?yàn)橛腥绱硕嗟牟淮_定因素,所以,從來就沒有辦法計(jì)算C的時(shí)間。
5、hour,curtm-tm_min, curtm-tm_c,curtm-tm_wday, curtm-tm_yday);char date[11];//yyyy-mm-dd sprintf(date, %4d-%02d-%02d,curtm-tm_year+1900,curtm-tm_mon+1, curtm-tm_mday);printf(%s\n, date);} 要是顯示現(xiàn)在的時(shí)間必須不斷的刷屏。。
6、延時(shí),用匯編語言編寫的,是可以計(jì)算耗時(shí)時(shí)間的。用C語言,我們不能確定編譯究竟使用了什么存儲器,所以不能準(zhǔn)確的算出延時(shí)時(shí)間,只能用keil等,進(jìn)行仿真,進(jìn)行測試。
請問下面的C語言延時(shí)函數(shù)是如何計(jì)算延時(shí)時(shí)間的?for循環(huán)中的四個(gè)nop是...
首先你要延時(shí)多長時(shí)間,us級別的必須使用匯編,C誤差很大,10-100us級別的可以用C控制,單必須考慮C出棧入棧時(shí)間。ms以上的用時(shí)間除以機(jī)器周期(除以你則個(gè)1us是不行的,誤差大)。另外,看著你好像用的是keil,keil里邊單步調(diào)試?yán)镞叢皇怯袝r(shí)間嗎,你可以看一下算算CPU空跑的次數(shù),很簡單。
在c語言里沒有這個(gè)_nop_函數(shù),這個(gè)函數(shù)是在51單片機(jī)里使用的。作用:對于延時(shí)很短的,要求在us級的,采用“_nop_”函數(shù),這個(gè)函數(shù)相當(dāng)匯編NOP指令,延時(shí)幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時(shí)時(shí)間,對于12M晶振,延時(shí)1uS。對于延時(shí)比較長的,要求在大于10us,采用C51中的循環(huán)語句來實(shí)現(xiàn)。
允許誤差范圍在十幾微秒以內(nèi)[2],否則,芯片無法工作。用51匯編語言寫程序時(shí),這種問題很容易得到解決,而目前開發(fā)嵌入式的主流為C語言,用C51寫延時(shí)程序時(shí)需要一些技巧[3]。
在c語言中如何實(shí)現(xiàn)延時(shí)功能?
1、在C語言中,可以使用delay函數(shù)來實(shí)現(xiàn)程序的延時(shí)功能。delay函數(shù)可以使程序暫停一段時(shí)間,定義一個(gè)delay函數(shù),函數(shù)的參數(shù)為延時(shí)的時(shí)間,為毫秒。
2、C語言中,實(shí)現(xiàn)延時(shí)功能通常通過無實(shí)際作用的代碼來達(dá)到控制時(shí)間的效果。
3、幾個(gè)精確延時(shí)程序:在精確延時(shí)的計(jì)算當(dāng)中,最容易讓人忽略的是計(jì)算循環(huán)外的那部分延時(shí),在對時(shí)間要求不高的場合,這部分對程序不會(huì)造成影響。500ms延時(shí)子程序程序:(晶振12MHz,一個(gè)機(jī)器周期1us。
4、就是循環(huán)做減法,讓N自減1 ,然后,再自減1,直到為0,才跳出循環(huán)。實(shí)際是就拖延時(shí)間。這個(gè)在不同機(jī)器上的延時(shí)是不同的。在快的機(jī)器上延時(shí)短,慢的機(jī)器上延時(shí)長。要準(zhǔn)確延時(shí),還得調(diào)用實(shí)時(shí)時(shí)鐘才行。
如何用C語言實(shí)現(xiàn)延時(shí)功能?
在C語言中,可以使用delay函數(shù)來實(shí)現(xiàn)程序的延時(shí)功能。delay函數(shù)可以使程序暫停一段時(shí)間,定義一個(gè)delay函數(shù),函數(shù)的參數(shù)為延時(shí)的時(shí)間,為毫秒。
ms延時(shí)子程序程序:(晶振12MHz,一個(gè)機(jī)器周期1us。
C語言中,實(shí)現(xiàn)延時(shí)功能通常通過無實(shí)際作用的代碼來達(dá)到控制時(shí)間的效果。
就是循環(huán)做減法,讓N自減1 ,然后,再自減1,直到為0,才跳出循環(huán)。實(shí)際是就拖延時(shí)間。這個(gè)在不同機(jī)器上的延時(shí)是不同的。在快的機(jī)器上延時(shí)短,慢的機(jī)器上延時(shí)長。要準(zhǔn)確延時(shí),還得調(diào)用實(shí)時(shí)時(shí)鐘才行。
如果用C51來編寫延時(shí)程序,一般都用循環(huán)語句:例:void delay(unsigned int num){ unsigned int i;for (i=0; inum; i++){ ; // 程序什么都不做 } } 原理很簡單,程序什么都不做,只是不段的比較,直到比較完,這樣就起到延時(shí)的作用了。
C語言延遲時(shí)間,我的是12M晶振,這個(gè)程序的延遲時(shí)間到底是多少?_百度...
1、M就是每秒 12000000HZ 也就是說 循環(huán)12次的話是1微秒,循環(huán)12000次的話是1毫秒。
2、具體我?guī)湍阏{(diào)試過了,如果單片機(jī)接12MHz晶振的話,這個(gè)是延時(shí)0.2秒的子程序。你調(diào)用一次delay();就延時(shí)0.2秒。請選為最佳答哦親。
3、按照C語言語句來計(jì)算定時(shí)時(shí)間是無法直接斷的,還跟你用的CPU有關(guān)。按照51以及一般程序書寫習(xí)慣來說,12M晶振先12分頻,即實(shí)際工作在1M,粗略認(rèn)為delay(5)是5次減1操作,那就是大約5us。注意:僅僅這樣斷是不準(zhǔn)確的,真正要準(zhǔn)確的知道延時(shí)時(shí)間,只能通過實(shí)驗(yàn)或者查看反匯編語句分析。
4、用12MHz的晶振的話,其延時(shí)大概是1ms。其實(shí)for (i=0;i124;i++);更接近1ms。
5、在不同單片機(jī)中,有不同的單片機(jī)指令。每個(gè)指令都占用不同的時(shí)鐘周期。一般延時(shí)程序就是通過循環(huán)去達(dá)到延時(shí)的作用。
C語言用while的延遲的時(shí)間
用KEIL可以計(jì)算時(shí)間,將while的起始位置和終止位置加紅點(diǎn)(雙擊即可);然后左側(cè)的SEC后面的就是的時(shí)間。
你可以這樣,定義一個(gè)變量,比如說time=0,在循環(huán)里面每次循環(huán)time++,循環(huán)的斷條件就是while(time200)就行了 這里有延時(shí)函數(shù)的介紹 /* 函數(shù)類型:void (無返回值)函數(shù)接口:delay(int)例如在程序中取得n秒的延時(shí),只要在代碼中加入 delay(n) 即可。注:n 為 int 類型。
要在C語言中一個(gè)數(shù)字倒計(jì)時(shí),你可以使用循環(huán)和延遲函數(shù)來實(shí)現(xiàn)。
c語言延遲時(shí)間怎么算的的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于c語言怎么延遲輸出、c語言延遲時(shí)間怎么算的的信息別忘了在本站進(jìn)行查找哦。
本文鏈接:http:///bian/225457.html