用sleep延時(shí)刷新并獲取系統(tǒng)時(shí)間來(lái)顯示。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到瑪曲網(wǎng)站設(shè)計(jì)與瑪曲網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋瑪曲地區(qū)。
每一遍,如果是1us,才能是延時(shí)約1s。但是,晶振是12MHz,一條匯編的指令就至少是1us,C語(yǔ)言的語(yǔ)句,就要更多。
在中斷程序中定義一個(gè)靜態(tài)變量,每次中斷加一,這樣當(dāng)這個(gè)變量值為4000時(shí)就剛好是1S鐘。
C語(yǔ)言描述問(wèn)題比匯編語(yǔ)言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語(yǔ)言相當(dāng)。C語(yǔ)言一般只比匯編語(yǔ)言代碼生成的目標(biāo)程序效率低10%-20%。因此,C語(yǔ)言可以編寫(xiě)系統(tǒng)軟件。
c語(yǔ)言的循環(huán)次數(shù)你自己算,每條指令一個(gè)周期,所以樓上的程序在12Mhz下是1s延遲。
記下當(dāng)前時(shí)間T1,然后按F10(不進(jìn)入子函數(shù))調(diào)試,再記錄當(dāng)前時(shí)間T2,則延時(shí)=T2-T1。多試幾個(gè)A,差不多調(diào)到1s就夠了。我一般都這么調(diào)。你要想明白其中原理,想自己算的話,你就看看delay的匯編代碼段自己算吧。
每一遍,如果是1us,才能是延時(shí)約1s。但是,晶振是12MHz,一條匯編的指令就至少是1us,C語(yǔ)言的語(yǔ)句,就要更多。
include reg5h include intrins.h unsigned char i;void main(){ TMOD=0x00;TH1=0x3c;TL1=0xb0;EA=1;ET1=1;TR1=1;while(1){ if(i==20){ i=0;//下面寫(xiě)你要處理的的其他程序,你只要了定時(shí)1s。
記下當(dāng)前時(shí)間T1,然后按F10(不進(jìn)入子函數(shù))調(diào)試,再記錄當(dāng)前時(shí)間T2,則延時(shí)=T2-T1。多試幾個(gè)A,差不多調(diào)到1s就夠了。我一般都這么調(diào)。你要想明白其中原理,想自己算的話,你就看看delay的匯編代碼段自己算吧。
然后,進(jìn)行宏定義,代碼如圖所示。然后聲明P1口,如下圖所示。最后,將延時(shí)語(yǔ)句全部添加進(jìn)去,代碼按照?qǐng)D中所示的直接敲入即可。最后,點(diǎn)擊編譯,生成HEX文件就可以了,這樣51單片機(jī)延時(shí)語(yǔ)句就完成了。
一種比較簡(jiǎn)單的就是粗略的軟件延時(shí);如:void delay_1s(void){ unsigned char i,j;for(i=0;i128;i++)for(j=0;j254;j++);} 這種通過(guò)調(diào)整i和j的最終值來(lái)確定延時(shí)時(shí)間,沒(méi)有辦法精確計(jì)算的。
要看你的時(shí)鐘周期,如果是12Mhz的話,每個(gè)時(shí)鐘周期MC=6*2/12 M =1us,所以延遲是讓機(jī)器計(jì)數(shù)1000000下,上面那個(gè)公式你自己套用24Mhz的就是2000000下。c語(yǔ)言的循環(huán)次數(shù)你自己算,每條指令一個(gè)周期,所以樓上的程序在12Mhz下是1s延遲。
ms以上的用時(shí)間除以機(jī)器周期(除以你則個(gè)1us是不行的,誤差大)。另外,看著你好像用的是keil,keil里邊單步調(diào)試?yán)镞叢皇怯袝r(shí)間嗎,你可以看一下算算CPU空跑的次數(shù),很簡(jiǎn)單。
記下當(dāng)前時(shí)間T1,然后按F10(不進(jìn)入子函數(shù))調(diào)試,再記錄當(dāng)前時(shí)間T2,則延時(shí)=T2-T1。多試幾個(gè)A,差不多調(diào)到1s就夠了。我一般都這么調(diào)。你要想明白其中原理,想自己算的話,你就看看delay的匯編代碼段自己算吧。
這個(gè)是和你機(jī)器的運(yùn)算速度有關(guān)的 你要計(jì)算出這個(gè)函數(shù)用了多少時(shí)間就要用時(shí)間函數(shù),我很久沒(méi)用了。
算法是這樣的:這個(gè)用編譯軟件,如keil,編譯通過(guò)之后,進(jìn)入軟件調(diào)試功能,就可以測(cè)出來(lái)是延時(shí)多少秒。具體我?guī)湍阏{(diào)試過(guò)了,如果單片機(jī)接12mhz晶振的話,這個(gè)是延時(shí)0.2秒的子程序。你調(diào)用一次delay();就延時(shí)0.2秒。
網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言1s延時(shí)函數(shù) c語(yǔ)言延時(shí)10s的函數(shù)怎么寫(xiě)
文章分享:http://chinadenli.net/article47/dsjjsej.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(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)
猜你還喜歡下面的內(nèi)容