標(biāo)題: 關(guān)于單片機(jī)延時(shí)函數(shù)的理解問題 [打印本頁]

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

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


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

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

不用計(jì)算,在下載器上有一個(gè)延時(shí)計(jì)算器,輸入你想要的時(shí)長(zhǎng),自動(dòng)生成C代碼,注意看右上角




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