|
|
大家在寫18B20函數的時候,因為DS18B20是慢速器件,需要延時,特別是初始化函數延時達480us之久,在使用一些程序時嚴重干擾其他程序正常運行,特別是點陣屏和數碼管,出現閃爍的現象。筆者在編寫程序的過程積累了經驗,把一些工作比較久的函數當成延時來用,效果十分好,提高了程序效率。如下:
void reset_18b20()
{
DQ=0;
display(); //巧妙的把顯示函數當延時來用
DQ=1;
Conversion(); //巧妙的把農歷轉換函數當延時來用
if(DQ)
err=1;
while(!DQ);
err=0;
}
上述例子是兩個函數,一個是顯示函數,一個是陽歷轉陰歷函數,都是占用時間比較久的。經過調試,顯示函數運行時間大約在480us,剛剛好。這樣,既調用了顯示函數,又起到了延時作用,無需使用效率低的延時函數。
|
|