單片機(jī)C語言精確延時值的計算

單片機(jī)C語言精確延時值的計算

ID:38083181

大小:23.50 KB

頁數(shù):3頁

時間:2019-05-28

單片機(jī)C語言精確延時值的計算_第1頁
單片機(jī)C語言精確延時值的計算_第2頁
單片機(jī)C語言精確延時值的計算_第3頁
資源描述:

《單片機(jī)C語言精確延時值的計算》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、一般如果是用循環(huán)延時使用12M的晶振要方便些,如果是定時器則是用11.0592的要方便和精確一些關(guān)于單片機(jī)C語言的精確延時,網(wǎng)上很多都是大約給出延時值沒有準(zhǔn)確那值是多少,也就沒有達(dá)到精確高的要求,而51hei給出的本函數(shù)克服了以上缺點(diǎn),能夠精確計數(shù)出要延時值且精確達(dá)到1us,本舉例所用CPU為STC12C5412系列12倍速的單片機(jī),只要修改一下參數(shù)值其它系例單片機(jī)也通用,適用范圍寬。?共有三條延時函數(shù)說明如下:函數(shù)調(diào)用分兩級:一級是小于10US的延時,二級是大于10US的延時//====================小于10US的【用1US級

2、延時】====================//----------微秒級延時---------for(i=X;i>X;i--)延時時間=(3+5*X)/12??提示(單位us,?X不能大于255)?//================大于10US<小于21.9955Ms的可用【10US級延時函數(shù)】===========voidDelay10us(ucharMs){???uchardatai;???for(;Ms>0;Ms--)???????????????????????for(i=26;i>0;i--);}i=[(延時值-1.75)*12/

3、Ms-15]/4如想延時60US則?i=[(60-1.75)*12/6-15]/4=25.375≈26;修改i的值=26,再調(diào)用上面的【10US級延時函數(shù)】Delay10us(6);則就精確延時60US;如果想延時64US可以用這二種函數(shù)組合來用:Delay10us(6);for(i=9;i>X;i--)?共延時64US?//==============對于大于20Ms的可用中斷來實(shí)現(xiàn)程序運(yùn)行比較好===============中斷用定時器0,1Ms中斷:voidtimer0(void)interrupt1????????????????????

4、?????????????{????????????????????????????????????????????????????????????????TL0=(0xffff-1000+2)%0x100;TH0=(0xffff-1000+2)/0x100;//每毫秒執(zhí)行一次???if(DelayMs_1>0)DelayMs_1--;//大于20Ms延時程序?}函數(shù)調(diào)用voidDelayMs(uinta)//延時a×1(ms)的時間。{???DelayMs_1=a;???while(DelayMs_1);}如果延時50Ms則函數(shù)值為?Delay

5、Ms(50)//+++++++++++++++++++++++++公式推算來由++++++++++++++++++++++++++++二級延時C語言反匯編見上傳圖1:?//=======================STC單片機(jī)延時指令時間====================?指今??????????????時間(1us)??????????????指今??????????????時間(1us)MOV??A??Rn??????1???????????????????????SETB?C????????????1MOV??Rn?#data??

6、??2???????????????????????SUBB?A??#data????2?DJNZ?Rn?rel??????4Dec??Rn???????????3????????????????????????SJMP?rel???????????3JC???rel???????????3????????????????????????MOV??Rndirect?????4??????Lcalladdr16?????????6????????????????????????RET????????????????4??//------------

7、--JNZ????????????????3????????????????????????XRL????????????????2SUBB??????????????3???使用Delay10us(ucharMs)最多能延時21995.5us;其中循環(huán)外函數(shù)調(diào)用與返回用的時間=(6+4)進(jìn)入+退出(1+1+2+3+,4)=10+11=21/12=1.75us;循環(huán)內(nèi)函數(shù)時間MS=Ms*(1+1+2+3,+2+4*I+3+3)/12=Ms*(15+4*I)/12;所以如果延時60us時用【10US級延時函數(shù)】I的值為:60=循環(huán)外時間+循環(huán)內(nèi)時間

8、=1.75us+Ms*(15+4*I)/12;則i=[(60-1.75)*12/6-15]/4=25.375≈26即如果Ms=6,i=2

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。