① 單片機延時程序的延時時間怎麼算的
單片機的延時程序通過執行指令來達到延時效果,這個時間等於執行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等於若干個機器周期。
(1)單片機匯編延時程序演算法分析擴展閱讀:
1丶指令周期,是每種運算需要的時間,如加法、邏輯等,是每一步進行這種指令運算需要的時間,是機器周期的整數倍,這種周期不定。
2丶51單片機12M晶振,晶振周期1/12微妙,一個機器周期包含12個晶振周期,所以12M晶振時機器周期=12x(1/12)微妙=1微妙。
3丶1個毫秒延時子程序如下:
void delay1ms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<110;j++);
}
}
② 51單片機使用匯編語言循環延遲時間怎麼算
時間精確的延時程序要用匯編語言來編寫。
計算延遲時間要查詢每一條程序的執行周期數,然後加起來就是了。
在12m晶振的系統中,每個機器周期是1微秒
借用一下:
舉例來說明吧:
delay:
mov r0,#10 ;1(周期)
delay1:
mov r1,#100 ;1
djnz r1,$ ;2
djnz r0,delay1 ;2
ret ;2
周期數=1+((1+(2*100)+2)*10)+2=2033
延遲時間=2033周期*1微秒=2033微秒
從到這個程序開始到返回到調用的那個程序用了2033微秒
③ 51單片機延時程序時間是怎麼計算的
51單片機延時時間計算需要考慮以下兩種因素:
1、指令執行時間
2、指令循環次數