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...