求問這段組合語言的延時程式怎麼計算延時時間

時間 2021-08-14 23:01:27

1樓:做而論道

採納答案,數字,算錯了吧?

應該是 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 毫秒。

2樓:匿名使用者

現在微控制器種類太多,即便都是8051核心,系統架構也不完全一樣,一個差別就是執行一條指令的時間不盡相同。所以你要根據具體的晶片資料,看看延時程式裡用到的各條指令執行時間都是多少,然後計算總延時時間。

組合語言5秒的延時程式怎麼寫(微機原理)

3樓:做而論道

lcall dl500ms

lcall dl500ms

lcall dl500ms

……共十次,正好是5s。(假設晶振頻率是12mhz)dl500ms 延時時間的說明,可見:

4樓:匿名使用者

可以用定時器,這樣比較精準點。不用定時器那隻能用迴圈了,根據晶振計算5秒時間的迴圈次數賦初值,然後迴圈。

5樓:匿名使用者

可以用定時器,這樣比較精準點

求組合語言延時程式,延時10毫秒的延時程式

6樓:做而論道

第一、組合語言有好多種。

第二、延時時間和你用的主頻有關。

這兩個問題,樓主說明一下先。

7樓:大別山的蝸牛

**如下:

delay10s:

lcall delay100ms

inc r1

cjne r1,#100,delay10smov r1,#0

retdelay100ms: ;誤差 0usmov r7,#100

dl1:

mov r6,#8eh

dl0:

mov r5,#02h

djnz r5,$

djnz r6,dl0

djnz r7,dl1ret

8樓:匿名使用者

51微控制器12m晶振延時10毫秒程式:

delay10ms:

mov r2,#20

delay1:

mov r3,#249

djnz r3,$

djnz r2,delay1

ret共延時10.023ms

9樓:最愛楷心

首先明確機器執行一條指令耗時大概是1us那麼延時10ms的程式如下:mov ax,50l1:mov bx,100l2:

dec bx     jnz l2dec axjnz l1執行完之後時間大約為10ms多一點

根據具體問題型別,進行步驟拆解/原因原理分析/內容拓展等。

具體步驟如下:/導致這種情況的原因主要是……

組合語言程式題目請教求高人解答,組合語言程式的一道題。求高手解答!!!

萬世流香 1data segment src db how are you?des db are data ends stack segment stack db 200 dup 0 stack ends code segment assume cs code,ds data,ss stacksta...

組合語言的延時問題簡單急

nop和ljmp start通常是放在中斷入口處,一般微控制器前100h位元組有幾個中斷入口,有軟中斷也有硬中斷,如果沒有用到中斷,最好也把中斷入口給預留出來,並且用nop和ljmp start指令填入,這是一種程式設計技巧,可以防止意外中斷產生,照成程式執行混亂,轉到start後,可以確保程式從頭...

微機原理組合語言的程式

衛生一報 除錯時需要把中文標點符號改為英文標點符號,否則會出現out of memory的提示資訊 data segment 定義資料段 adr db 10,31,45,67,80,46,0,31,0,77 num equ adr num是資料個數da1 db 0 da1用來存放正數的個數,初值為0...