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