微控制器C語言延時分析

2021-08-14 06:20:01 字數 701 閱讀 1858

1.例1,12mhz晶振除錯

以下兩個是無引數的delay函式,內部用的是for迴圈來delay。

lcall 2個週期

mov a到rx 1個週期

clr  1個週期

inc  1個週期

cjne 2個週期

ret  2個週期

lcall+ret+clr+mov+110*(inc+cjne)=2+2+1+1+110*(1+2)=336us  按110來算就是約等於110*3個週期,因為迴圈語句就兩條共3個週期。

892.734-892.398ms=336us

例2:12mhz晶振除錯,傳引數,for迴圈只有1層,且是char型別。

mov 1個週期

lcall 2個週期

clr 1個週期

subb 1個週期

jnc 2個週期

inc  1個週期

smjp 2個週期

ret 2個週期

mov+lcall+clr+mov+123*(mov+clr+subb+jnc+inc+sjmp)-inc-sjmp+ret=1+2+1+1+124*(1+1+1+2+1+2)-1-2+2=996us

893.394ms-892.398ms=996us

結論,傳引數型別的delay,占用更多指令,所以延遲更大。另外還和晶振大小有關,所以需要精確的延時時,需要單獨測試for迴圈的延時,才能拿來使用。

51微控制器彙編延時分析

51微控制器彙編延時分析 第一句是定義乙個延時函式標號,並將250傳到r7。第二句是放置乙個標號,並把250放到r6。延時函式 delay mov r7,250 1 d1 mov r6,250 2 d2 djnz r6,d2 3 djnz r7,d1 4 ret 5第一句是定義乙個延時函式標號,並將...

51微控制器的準確延時分析

首先我們來看個簡單的例子 51 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit led p2 0 將微控制器的p2.0埠定義為led vo...

51微控制器C語言延時函式

c程式中可使用不同型別的變數來進行延時設計。經實驗測試,使用unsigned char型別具有比unsigned int更優化的 在使用時應該使用unsigned char作為延時變數。以某晶振為12mhz的微控制器為例,晶振為12mhz即乙個機器週期為1us。一.500ms延時子程式 程式 voi...