51微控制器彙編延時計算詳細分析

2021-06-18 23:32:10 字數 1243 閱讀 5418

晶振頻率:12m 

(一)原程式:

delay: mov  r7,#200     

d1: mov r6,#125

d2: djnz r6,d2

djnz r7,d1

ret

分析過程:

delay: mov   r7,#200        r7=200   執行需1us

d1: mov r6,#125 r6=125 1us

d2: djnz r6,d2 r6=124 直到r6=0,共執行125次125*2us

djnz r7,d1 r7=199 2us

d1: mov r6,#125 r6=125

d2: djnz r6,d2 r6=124

djnz r7,d1 r7=198

** 共執行200次

*d1: mov r6,#125 r6=125

d2: djnz r6,d2 r6=124

djnz r7,d1 r7=1

d1: mov r6,#125 r6=124

d2: djnz r6,d2 r6=123

djnz r7,d1 r7=0 執行下一條程式

ret 2us

延時時間為:1+(1+125*2+2)*200+2=50603us

公式:精確延時時間=3+3*r7+2*r7*r6

(二)原程式:

delay: mov   r7,#10

d1: mov r6,#200

d2: mov r5,#248

d3: djnz r5,d3

djnz r6,d2

djnz r7,d1

ret

延時時間為:1+[1+(1+248*2+2)*200+2]*10+2=998033us

公式:精確延時時間=1+[1+(1+r5*2+2)*r6+2]*r7+2=3+3*r7+3*r7*r6+2*r7*r6*r5

加上lcall delay的時間,需加 2us,則最終時間就為兩條程式執行間隔時間。

51微控制器延時計算

若時鐘晶振的振盪頻率為fosc,則振盪週期 tosc 1 fosc 如 晶振頻率為12mhz,則振盪週期 tosc 1 12us 對於不同的晶元採用的機器週期各不相同,主要分為 12t 6t 4t 1t等等。如51系列微控制器常見的12t機器週期,每個機器週期占用時間為 12 時鐘週期 依此類推,6...

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微控制器延時函式

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