請問這段微控制器組合語言程式(關於定時器延時)是什麼意思

2021-08-14 22:59:15 字數 2549 閱讀 1305

1樓:匿名使用者

delay:mov r3,#14h ;迴圈20次mov tmod,#10h ;定時器1工作於模式1(16位定時器)

mov th1,#3ch ;賦初值,50毫秒溢位一次mov tl1,#0b0h

setb tr1 ;啟動定時器1

lp1: jbc tf1,lp2 ;溢位位為1,則清0後轉移到lp2

sjmp lp1 ;否則等待tf1置1lp2 :mov th1,#3ch ;重新賦初值mov tl1,#0b0h

djnz r3,lp1 ;20次迴圈完成則退出,否則轉lp1ret;綜述:以上共延時1秒。

2樓:匿名使用者

delay:mov r3,#14h ; 迴圈20次 組合語言定時器賦初方法

mov tmod,#10h ; 定時器1工作於模式1(16位定時器)

mov th1, #high not 50000 ; 賦初值,50毫秒溢位一次

mov tl1,#low not 50000 ; 晶振 12 mhz 為 50000 us

setb tr1 ; 啟動定時器1

lp1: jbc tf1,lp2 ; 溢位位為1,則清0後轉移到lp2

sjmp lp1 ; 否則等待tf1置1

lp2 :mov th1, #high not 50000 ; 重新賦初值 這樣比較 直觀

mov tl1, #low not 50000 ; 1 就是 1 us ,1毫秒=1000 us

djnz r3,lp1 ;20次迴圈完成則退出,否則轉lp1ret

51微控制器的定時器怎麼做延時 彙編

3樓:無畏無知者

1)你的主程式必須在1秒內完成一個過程,然後等待下一秒的到來;2)主程式放在一個迴圈內,並回設定答一個標記,以判斷是否觸發執行主程式,還是繼續空迴圈;

3)這個標記就由延時中斷例程來賦值;

其實,如果你的主程式能夠在1秒內完成,由沒有其他任務的話,完全可以放在中斷例程裡執行的;

4樓:黑影小生

貌似想到的方法和複雜,就是每個語句前都用cjne r1,#00h,$ // 執行語句 // ,mov r1,#00h

然後在定時器內使r1置1或其他值,這樣做很麻煩,不知你要這樣幹什麼???

5樓:匿名使用者

定時器中斷裡1s時,作個標誌,主程式裡判斷這標誌。

給你一個流水燈內

的例子參考。

org 容00h

ajmp main

org 0bh

ajmp t0int

org 30h

main:

mov tmod,#01h

mov th0,#3ch

mov tl0,#0b0h

mov r0,#20

setb ea

setb et0

setb tr0

main0:

mov a,#01h

main1:

mov p1,a

jnb f0,main1

clr f0

rl a

inc a

ajmp main1

t0int:

mov tmod,#01

mov th0,#3ch

mov tl0,#0b0h

djnz r0,rti

mov r0,#20

setb f0

rti:

retiend

求解釋!!!組合語言:延時程式

6樓:生活如歌

需要注意的一點就是djnz指令是2週期的,所以你的時間是迴圈次數乘以2.

delay:mov r7,#250

del1:mov r6,#100

del2:mov r5,#10

djnz:r5,$;2個機器週期

djnz:r6,dl2

djnz r7,dl1

2*10*100*250=500000us=0.5s以上時間只是大概值,沒有考慮其它指令的週期,但影響不大。

7樓:匿名使用者

delay:mov r7,#250 第一層迴圈250次

del1:mov r6,#100 第二層迴圈100次

del2:mov r5,#10 第三層迴圈10次

djnz:r5,$ 如果r5不等於0,則跳轉到本行,也就是空轉10次

djnz:r6,dl2 如果r6不等於0,則跳到dl2行,給r5賦值

djnz r7,dl1 如果r7不等於0,則跳到dl1行,給r6賦值

所以總的空轉迴圈次數是250*100*10=250000次,通過調節r5,r6,r7值來控制延時時間

微控制器組合語言問題

建議你用定時中斷方式,下面的供參考 org 0000h ajmp start org 001bh ljmp time1 定時中斷1入口 org 0030h start mov 30h,0 mov 31h,0 mov 32h,0 mov 33h,0 mov p2,0ffh mov dptr,table...

微控制器串列埠通訊問題(組合語言),微控制器串列埠通訊問題(組合語言)

這倆程式,執行到最後邊,都是 ret,返回指令。返回到何處去呀?呵呵,還是,先解決程式結構的問題。1 程式結構 有問題,沒有呼叫子程式 就不應該有子程式返回指令。2 jnb ti,clr ti 為判斷 串列埠 是否 傳送 完畢的,3 jnb ri,clr ri 為判斷 串列埠 是否 有接收 的,如果...

這個微控制器題怎麼做?(組合語言)

程式如下 org 0000h jmp main org 0030h main mov sp,68h mov r7,08h mov r0,30h mov r1,40h loop mov a,r0 mov b,r1 add a,b mov r0,a inc r0 inc r1 djnz r7,loop ...