標(biāo)題:
關(guān)于延時(shí)函數(shù)的一些問(wèn)題和匯編的學(xué)習(xí)與否
[打印本頁(yè)]
作者:
heicc
時(shí)間:
2015-1-5 16:55
標(biāo)題:
關(guān)于延時(shí)函數(shù)的一些問(wèn)題和匯編的學(xué)習(xí)與否
----------------===============延時(shí)函數(shù)==================--------------
延時(shí)函數(shù),是很多程序都會(huì)用到的函數(shù)。C語(yǔ)言很難調(diào)試出非常精確的延時(shí)函數(shù),但對(duì)于大多說(shuō)場(chǎng)合來(lái)說(shuō)還是可以應(yīng)用的。若是像DS18B20這類單總線器件對(duì)時(shí)序的要求較高的,就必須要討論延時(shí)函數(shù)的準(zhǔn)確性了。
在此,我所說(shuō)的是一般應(yīng)用延時(shí)函數(shù)。如延時(shí)1ms、10ms之類的,用于LED流水燈和按鍵消抖的程序!在調(diào)試過(guò)程中,也遇到一些問(wèn)題,由于不懂匯編,所以暫時(shí)無(wú)法測(cè)試其具體原因,所以,我也在想是否要學(xué)習(xí)匯編語(yǔ)言。希望懂匯編的朋友能夠自己分析。
--------------------------==============延時(shí)程序==============------------------
--------------------------------------------------------------
編譯測(cè)試環(huán)境:
KEIL μVision 3
晶振頻率:
11.0592MHz
測(cè)試方法:
軟件自帶調(diào)試功能
-------------------------------------------------------------
void delay(unsigned int t) //延時(shí) t 毫秒函數(shù),參數(shù)在0 ~ 65535之間,晶振為11.0592MHz
{
unsigned int x,y; //定義兩個(gè)循環(huán)用的變量參數(shù)
for(x = t;x > 0;x --) //循環(huán)的次數(shù),有實(shí)參決定
for(y = 120;y > 0;y --); //每次循環(huán)的內(nèi)部循環(huán)次數(shù)。
}
問(wèn)題:當(dāng)把y聲明為unsigned char類型時(shí),延時(shí)函數(shù)有所改變,測(cè)試結(jié)果為3.1ms左右。
如下面所示:
-------------------------------------------------------
void delay(unsigned int t) //此延時(shí)函數(shù),不能準(zhǔn)確延時(shí)1ms.
{
unsigned int x; //定義兩個(gè)循環(huán)用的變量參數(shù)
unsigned char y;
for(x = t;x > 0;x --) //循環(huán)的次數(shù),有實(shí)參決定
for(y = 120;y > 0;y --); //每次循環(huán)的內(nèi)部循環(huán)次數(shù)。
}
-------------------------------------------------------
問(wèn)題的具體原因,我不清楚。應(yīng)該用匯編的方法來(lái)調(diào)試。
---------------------==若以后調(diào)試出來(lái),會(huì)再更新的==在次做個(gè)標(biāo)記--------------------------
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1