㈠ 單片機延時程序的延時時間怎麼算的
單片機的延時程序通過執行指令來達到延源殲時效果,這個時間等於執行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等於若干個機器周期。
(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++);
}
}
㈡ 求問這段匯編語言的延時程序怎麼計算延時時間
採納答案,數字,算錯了吧?
應該是 500 多毫秒。
51 單片機的指令,執行時間,是一個機器周期或二個機器周期。
只有乘除指令,是余手碰臘四個機器周期。
機器周期,稱為T。
正確計算如下:
MOV R2, #10 ;1T
L1: MOV R3, #100 ;1T
L2: MOV R4, #250 ;1T
L3: DJNZ R4, L3 ;2T 2 * 250 = 500T
DJNZ R3, L2 ;2T (1+500+2) * 100 = 50300T
DJNZ R2, L1 ;2T (1+50300+2) * 10 = 503030T
RET ;2T (1+503030+2) = 503033T
總共執行豎吵嫌時間是:503033T。
當晶振是 12MHz,T 就是 1us。
那麼,延時時間就是 503033us,約等於 500 毫秒。