51學(xué)習(xí)之延時程序
可是我同樣寫了。可是不能延時啊。有這樣的么?
上網(wǎng)小查了下說是:你定義參數(shù)是char型,就只能到256;是int 型,就取到65535.
問題出來了,我想延時長點(diǎn),定義的int,直接填了150000.無知是可怕的?。∥〗逃?xùn),改到了50000行了吧?
一運(yùn)行,還是不行!
沒辦法,只好調(diào)人家原程序了。人用的是兩級for循環(huán),50000*3 。一試成了。
再看自己的,還是不行。
照人家的改自己的程序,不行,不行,還是不行。
一個字一個字對,發(fā)現(xiàn)問題了,人家定義uint ,我的是int ,就這嗎?可是,可是,沒多大差別吧?算了,改改試試。一改unit ,成了。
看來問題就是這了,仔細(xì)想,終于想明白了這里頭的玄機(jī)。
uint 0-65535 int -32767-32768 我用的int ,我給人填數(shù)50000,人都不知這是啥,還能延時才奇怪了!改成unit,自然成了。
程序如下:
Delay()
{int i,j;
for(i=0;i<32000;i++);
}
從網(wǎng)上看的:一般延時us,只用單個for,一般ms級的都用兩個for就OK了。要是精確定時,就要用定時器了。我自己總結(jié)了下:單for,寫到5000,還能看到燈閃;最在寫到32000,燈閃,能知道,但是看不到滅的狀態(tài)。雙for,寫到7000*3,差不多就可看到滅的狀態(tài)。如果,執(zhí)行一句要1us,大概就是20ms.至少要到ms級人眼才能識別。
評論