在給單片機寫程序的時候往往需要一個微秒或者毫秒的延時子程序,但是C語言不同于匯編,很難根據(jù)語句確定準確的延時時間,經(jīng)過各種查資料得到一種簡單實用的方法:通過keil下斷點調(diào)試確定時間。
就是編寫一個延時子程序,然后在延時程序處和while(1)設置斷點,運行程序,在調(diào)試模式下就可以獲得該延時子程序的準確延時時間。
1,編寫如下源程序:
#include
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
}
void main (void)
{
delay_ms(1);
while(1);
}
2,下圖位置設置斷點
3,看哥哥怎么搞:
進入運行模式,開始運行(1處所示),程序會在延時子程序前的斷點處停下,此時記錄程序運行時間,2處所示。
4,繼續(xù)搞
再次點運行(1處所示),此時程序會在第二個斷點處,也就是while(1)停下,這時候程序剛剛運行完延時子程序,讀取此時的程序運行時間,如2所示,,二者想減就是延時子程序運行時間。如下圖:
0.00143989-0.00042209=0.0010178,約等于1mS,ok,這樣就得到你所寫的延時子程序的延時時間,準確的哦,可以在你得到的運行時間的基礎上更改數(shù)值來得到希望的延時時間。當然記得設置晶振為你所需要的,我這里是11.0592。
參考:51hei論壇