標(biāo)題: 簡(jiǎn)單的程序不簡(jiǎn)單,請(qǐng)問(wèn)為什么LED不閃爍?51單片機(jī)數(shù)據(jù)類型計(jì)數(shù)延時(shí)的問(wèn)題? [打印本頁(yè)]

作者: 芙蓉焊料    時(shí)間: 2022-12-4 14:35
標(biāo)題: 簡(jiǎn)單的程序不簡(jiǎn)單,請(qǐng)問(wèn)為什么LED不閃爍?51單片機(jī)數(shù)據(jù)類型計(jì)數(shù)延時(shí)的問(wèn)題?
數(shù)據(jù)類型計(jì)數(shù)延時(shí)的問(wèn)題?

單片機(jī)源程序如下:







作者: 芙蓉焊料    時(shí)間: 2022-12-4 15:19
i=10000 就正常了,不應(yīng)該啊,請(qǐng)老師解答
作者: ccwsyyds    時(shí)間: 2022-12-4 16:05
建議延遲函數(shù)這樣寫,這樣是1s。(uint為unsigned int)你那種不規(guī)范。。。。。。
void delay(uint time)
{
        uint i,j;
        for(i=0;i<time;i++)
                for(j=0;j<155;j++)
                        ;
}
作者: xuyaqi    時(shí)間: 2022-12-4 16:09
芙蓉焊料 發(fā)表于 2022-12-4 15:19
i=10000 就正常了,不應(yīng)該啊,請(qǐng)老師解答

i=1000000也是可以的,你得耐心等待。
作者: taotie    時(shí)間: 2022-12-4 17:11
1個(gè)機(jī)器周期等于12個(gè)振蕩周期,振蕩周期也叫時(shí)鐘周期,時(shí)鐘周期即晶振的單位時(shí)間發(fā)出的脈沖數(shù),
如12MHZ=12×10的6次方,即每秒發(fā)出12000000個(gè)脈沖信號(hào),那么發(fā)出一個(gè)脈沖的時(shí)間就是時(shí)鐘周期,
即1/12微秒;如11.0592MHZ=11.0592×10的6次方,即每秒發(fā)出11059200個(gè)脈沖信號(hào),
那么發(fā)出一個(gè)脈沖的時(shí)間就是時(shí)鐘周期,即1/11.0592微秒)。

在51單片機(jī)中,1個(gè)機(jī)器周期等于12個(gè)振蕩周期,則在計(jì)算定時(shí)時(shí)間t時(shí):

計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。
作者: Hephaestus    時(shí)間: 2022-12-4 17:47
long運(yùn)算時(shí)間遠(yuǎn)大于1us,所以你的代碼是正確的,但是需要極大地耐心來(lái)證明。
作者: 芙蓉焊料    時(shí)間: 2022-12-4 18:01
Hephaestus 發(fā)表于 2022-12-4 17:47
long運(yùn)算時(shí)間遠(yuǎn)大于1us,所以你的代碼是正確的,但是需要極大地耐心來(lái)證明。

原來(lái)是這樣,呵呵,腦殼昏
作者: Longan.Wang    時(shí)間: 2022-12-5 10:03
xuyaqi 發(fā)表于 2022-12-4 16:09
i=1000000也是可以的,你得耐心等待。

這是正確的
作者: 1261867136qq    時(shí)間: 2022-12-6 08:47
關(guān)鍵你這機(jī)器周期不是1us一次,可以進(jìn)入 bebug 單獨(dú)看看 delay 這段程序 ,當(dāng)i = 1000000us,花了多久




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