回答這個問題前提需要搞清楚:
創新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、成都網站設計、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的羅山網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
1.你的執行文件在那里運行?
2.你要延時是否“死等”,還是可以切換到其他任務?
-----------------------------------------------
如果你只是學習c語言,寫個小函數玩玩,可以如下:
void delay(int time)
{
for(;time0;time--)
{
nop;//可寫任何無意義的操作
}
}
死等型的延時,時間根據指令執行速度不同而不同!!!!
延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那么單片機每震動一次所需要的時間是1/12M s。那么再來看看單片機執行一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等于100來計算。現在通過上面兩個數據可以得出:單片機每執行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。所以一個簡單的延時功能就誕生了,我們只需要自減120次,就可以延時1ms,如果我們要延時50ms呢,那就自減50*120=6000次。那么在程序上如何表達呢?我們可以用兩套for循環
void delay(int i){
int x,y;
for(x=i;x0;x--){
for(y=120;y0;y--)
}
}
參數 i 代表該函數延時多少ms
學過匯編你就會知道,每條指令都占一定的時間(或者機器周期)的,如果你讓機器什么都不做,即空指令的話,機器就會延時,然后你在計算好每次延時到底有多長,外面套一個循環(或者多重循環),根據你想要的延時時間即可計算出來循環的次數,延時函數基本上都是這種原理,它的參數就是用來控制循環次數的。
延遲函數里執行的都是空語句,也就是說循環執行空語句來達到延遲的目的.
每執行一條語句,即使是空語句都要耗費電腦一些處理時間的,就是因為這個,在延遲函數里寫一些無關緊要的東西,用來浪費電腦處理時間,從而延遲.
C語言的延遲函數一般是利用無意義程序運行來控制時間從而達到延時的目的
舉個例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
這是延時x毫秒的for循環語句。
值得注意的是記得最后的;一定得記得寫。
其實這是不太精準的延時程序,其實質就是for循環,就是讓處理器不停地做遞減或遞加運算,從而達到延時的目的。至于延時時間,完全是更具經驗的得到的。
網頁名稱:c語言延時子函數怎么寫,c語言中的延時函數
當前網址:http://m.kartarina.com/article38/hegdpp.html
成都網站建設公司_創新互聯,為您提供定制網站、、網站制作、網站收錄、網頁設計公司、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯