標題: 關于單片機延時函數(shù)的理解問題 [打印本頁]

作者: hello_liu    時間: 2018-12-4 17:05
標題: 關于單片機延時函數(shù)的理解問題
void Delay(int n)
{
          int x;
        while(n--)
        {
                x=50;
                while(x--);
        }
}

這個函數(shù)如果傳n=2,表示延時多少時間?20us?請教一下大佬一下


作者: Y_G_G    時間: 2018-12-4 18:53
跟n有關系,但不是像數(shù)學那樣的有對等的關系
這就是一個C函數(shù),n是C語言里的一個變量,執(zhí)行幾次是C標準里面的,并不絕對等于多少時間。
這個函數(shù)是要先經(jīng)過編譯器編譯成機器語言,然后再燒錄進單片機去執(zhí)行的。
對于KEIL來說,C函數(shù)是要先編譯成匯編,然后再燒錄的。運行的時間主要是看編譯之后的匯編的執(zhí)行時間的,不同編譯噐,效率不同,函數(shù)的延時時長也會不同的。
如果你要看這個函數(shù)延時多長時間,可以在C中添加斷點,或者是運行之后看生成的匯編,主要是看執(zhí)行了多少個時鐘,然后,再對比這個單片機的系統(tǒng)時鐘,最后去計算。
怎么這么恐怖呀,我自己都看不明白了
作者: gzhoney    時間: 2018-12-4 20:13
Delay(2)
作者: hello_liu    時間: 2018-12-5 08:43
Y_G_G 發(fā)表于 2018-12-4 18:53
跟n有關系,但不是像數(shù)學那樣的有對等的關系
這就是一個C函數(shù),n是C語言里的一個變量,執(zhí)行幾次是C標準里 ...

STC8C51機型的 怎么計算
作者: Y_G_G    時間: 2018-12-5 17:24
hello_liu 發(fā)表于 2018-12-5 08:43
STC8C51機型的 怎么計算

不用計算,在下載器上有一個延時計算器,輸入你想要的時長,自動生成C代碼,注意看右上角




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1