專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

STC12延時(shí)函數(shù)的探究

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月10日   【字體:

這種寫(xiě)法是C中嵌套了匯編。精確延時(shí)時(shí)間=2*t*T+5*T,T為一個(gè)機(jī)器周期。對(duì)于8051,



如果t=1,那么這個(gè)函數(shù)執(zhí)行應(yīng)該是7us。如果是STC12,那么這個(gè)延時(shí)函數(shù)的延時(shí)應(yīng)該是:若t=1,精確延時(shí)=2*1*1/12+5*1/12=(7/12)us啊。
昨天也查了STC12手冊(cè) 手冊(cè)上對(duì)時(shí)鐘寫(xiě)的很籠統(tǒng),其中一句話(huà)是:與8051指令執(zhí)行時(shí)間對(duì)比,一共有12個(gè)指令,一個(gè)時(shí)鐘就可以執(zhí)行完成,工作在相同頻率下運(yùn)行速度提高8~12倍
難道這里應(yīng)該是(7/8)us?而不是(7/12)us?
這個(gè)是uint型函數(shù)時(shí)間是近似的
那么可以用延時(shí)時(shí)間=8*t*T
應(yīng)該是8*1*(1/12)=8/12
根據(jù)程序分析猜想t=1時(shí)這個(gè)延時(shí)函數(shù)應(yīng)該為1us最為合理。
用示波器測(cè)試過(guò) 執(zhí)行一個(gè)delay(5000)大約5.8ms。51執(zhí)行一個(gè)delay(5000)大約40064us
嗯,用示波器測(cè)得那個(gè)IO口的頻率變化為85.47HZ,那么一個(gè)delay(5000)就是(1/85.47)/2*1000=5850us
這里的t設(shè)的uint型,有誤差,加上 LED=1;LED=0;執(zhí)行也會(huì)消耗時(shí)間 結(jié)果存在誤差 。
最后總結(jié)得出這條延時(shí)語(yǔ)句在51上執(zhí)行一次大約花7us,在12上花1us。示波器測(cè)試通過(guò)!和我計(jì)算符合。

關(guān)閉窗口