㈠ 單片機延時程序的延時時間怎麼算的
單片機的延時程序通過執行指令來達到延源殲時效果,這個時間等於執行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等於若干個機器周期。
(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++);
}
}
㈡ 求計算下面匯編延時程序的延時時間。
延時程序的時間,與每條指令的機器周期數有關,例如題目中出現的
MOV Rn,data指令為1個機器周期,
DJNZ Rn,LOOP指令為2個機器周扮畢孫期。
而每個機器周期的時間,又由系統的時鍾頻率決定。以經典的51單片機為例,一個機器周期為12個系統時鍾周數帶期。若系統時鍾頻率為10M,即1個系統時鍾周期為1us,則一個機器周期的時間為12us。
計算程序的延時時間,要先對照指令表,查出每條指令的機器周期數,再結合程序中出現的機循環次數,統計出程序總的機器周數。將總機器周期數乗以一個機器周期的時間,廳鏈就得到了程序總的延時時間。
對於現在一些改良的51兼容單片機,1個機器周期已不再是12個系統時鍾。例如STC的單片機中,就有4個系統時鍾,甚至1個系統時鍾的產品。所以在真正地計算延時的時候,必須要依據所選用單片機的晶元手冊所提供的參數,以及電路設計的系統時鍾頻率進行。