我記得keil里面有時間的,好久不用了,單位好像是微秒吧!就是那個分步執(zhí)行,按一下執(zhí)行一步的..比如前面那個箭頭指到你的調(diào)用函數(shù)delay(200);假設執(zhí)行到此部用時1110。
十年建站經(jīng)驗, 成都網(wǎng)站建設、網(wǎng)站設計客戶的見證與正確選擇。成都創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
可以有很多辦法,一是調(diào)整參數(shù),使其延時5分鐘或6分鐘,循環(huán)24次或20次。二是將延時函數(shù)的形參改為長整型(32位)延時時間擴大65536倍。
如果用循環(huán)語句實現(xiàn)的循環(huán),沒法計算,但是可以通過軟件仿真看到具體時間,但是一般精精確延時是沒法用循環(huán)語句實現(xiàn)的。
用51匯編語言寫程序時,這種問題很容易得到解決,而目前開發(fā)嵌入式系統(tǒng)軟件的主流工具為C語言,用C51寫延時程序時需要一些技巧[3]。
1、單片機中的delay()的單位時間不是系統(tǒng)提供的,而是用戶自己編制的。如果用循環(huán)語句實現(xiàn)的循環(huán),沒法計算,但是可以通過軟件仿真看到具體時間,但是一般精精確延時是沒法用循環(huán)語句實現(xiàn)的。
2、現(xiàn)在通過上面兩個數(shù)據(jù)可以得出:單片機每執(zhí)行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。
3、u16 i,這是定義一個16位整型的形參變量 i ,其實,u16 并不是C51的變量類型,而是在程序的前面用#define u16 unsigned int 宏定義的。
1、delay函數(shù)是一般自己定義的一個延時函數(shù)。C語言定義延時函數(shù)主要通過無意義指令的執(zhí)行來達到延時的目的。
2、一般單片機在c語言中很難得到精確的延時,所以一般對時間要求高的都用計時器中斷來做了。
3、1 C語言程序延時 Keil C51的編程語言常用的有2種: 一種是匯編語言;另一種是C 語言。用匯編語言寫單片機程序時,精確時間延時是相對容易解決的。