幫忙寫一下51彙編程式的註釋,求會51微控制器的大神幫忙給彙編程式加點註釋!!

2023-02-09 20:05:39 字數 10283 閱讀 2567

1樓:匿名使用者

flag bit 00h ;定義flag為00h位

org 00h ;以下彙編的程式**從0000h單元開始連續存放

start: jb p1.7,start ;測試等待報警訊號(p1.7為1則等待)

jnb flag,next ;有報警則測flag位,為0轉next,(控制蜂鳴器響和不響的時間長短)

mov r2,#200 ;flag位為1則200送r2(控制迴圈,報警時間)

dv: cpl p1.0 ;p1.0取反(經p1.0輸出一個與上一狀態相反有訊號,控制蜂鳴器發聲)

lcall dely500 ;延時

lcall dely500 ;延時

djnz r2,dv ;r2不為0則轉dv

cpl flag ;flag位變反

next: mov r2,#200 ;200送r2

dv1: cpl p1.0 ;p1.0取反

lcall dely500 ;延時

djnz r2,dv1 ;r2不為0則轉dv

cpl flag ;flag位變反

sjmp start ;轉開始處

dely500: mov r7,#250 ;延時程式(如果主頻12m則延時1.5ms)

loop: nop

djnz r7,loop ;r7不為0轉loop

ret ;r7為0返回

end ;彙編結束

2樓:匿名使用者

flag bit 00h 定義標示位

org 00h ;程式起止地址

start: jb p1.7,start 判斷1。7口是不是,即是高電平還是低電平,如果是低電平,再判斷,直到不為0才往下

jnb flag,next ;如果標示位不為0,轉到next子程式去執行

mov r2,#200 給r2一個值:200dv: cpl p1.0 1。0口取反

lcall dely500 調延時

lcall dely500 調延時

djnz r2,dv r2減1不等於0,轉到dvcpl flag 標示位取反

next: mov r2,#200

dv1: cpl p1.0

lcall dely500

djnz r2,dv1

cpl flag

sjmp start 轉到start

dely500: mov r7,#250

loop: nop 這一步什麼都不做

djnz r7,loop

retend

求會51微控制器的大神幫忙給彙編程式加點註釋!!

各位基於51微控制器彙編大神,我只會c語言程式設計,麻煩各位給幫註釋一下才程式,程式已經寫好了,有財富的哦

3樓:匿名使用者

貌似是一個用定時器中斷方式產生計時、並動態重新整理顯示的計時器程式.

table是數碼管的顯示段碼,tab是數碼管的位碼.

用的似乎是共陰數碼管,估計這樣的接法,亮度不高啊!

微控制器程式求完整註釋,會註釋的幫我一下,謝謝

4樓:匿名使用者

真巧,我今天很閒

loop: mov r2,#20 置1s計數初值

mov r3,#20 紅燈亮20s

mov second1,#25 東西路口計時顯示初值25s

mov second2,#25 南北路口計時顯示初值25s

lcall display

lcall statel1 呼叫狀態1

wait1:jnb tf0,wait1 查詢50ms到否

clr tf0

mov th0,#3ch 恢復t0定時初值50ms

mov tl0,#0b0h

djnz r2,wait1 判斷1s到否?未到繼續狀態1

mov r2,#20 置50ms計數初值

dec secind1 東西路口顯示時間減1

dec second2 南北路口顯示時間減1

lcall display

djnz r3,wait1 狀態1維持20s

mov r2,#5 置50ms計數初值

mov r3,#3 綠燈閃爍3s

mov r4,#4 閃爍間隔200ms

mov second1,#5 東西路口計時顯示初值5s

mov second2,#5 南北路口計時顯示初值5s

lcall display..

.state1: 狀態1

setb led_g1 綠燈1亮 東西路口路燈亮

clr led_y1 黃燈1滅

clr led_r1 紅燈1滅

clr led_g2 綠燈2滅

clr led_y2 黃燈2滅

setb led_r2 紅燈2滅 南北路口紅燈亮

ret...

display: 數碼管顯示(相當於讀秒)兩個顯示器同時顯示秒

mov a,second1 東西路口計時暫存器

mov b,#10

div ab

mov dbuf+3,a

mov a,b

mov dbuf+2,a

mov second2 南北路口計時暫存器

mov b,#10

diy ab

mov dbuf+1,a

mov a,b

mov dbuf,a

mov r0,#dbuf

mov r1,#temp

mov r7,#4

dp10:mov dpotr,#ledmap 查表,讀出對應顯示碼段

mov a,@r0

movc a,@a+dptr

mov @r1,a

inc r0

inc r1

djnz r7,dp10

mov r0,#temp

mov r1,#4

dp12:mov r7,#8

mov a,@r0

dp13:rlc a

mov p3.0,c 這段是硬體介面,送出顯示的碼段

clr p3.1

setb p3.1

djnz r7,dp13

inc r0

djnz r1,dp12

retlenmap:db 3fh,06h,5bh,4fh,66h,6dh 此段為顯示用的真值表(針對不同硬體不一樣)

db 7dh,07h,7fh,6fh

org 0200h

5樓:匿名使用者

給你一個更加完整的程式

second1 equ 30h ;東西路口計時暫存器

second2 equ 31h ;南北路口計時暫存器

led_g1 bit p2.2 ;東西路口綠燈

led_y1 bit p2.3 ;東西路口黃燈

led_r1 bit p2.4 ;東西路口紅燈

led_g2 bit p2.5 ;南北路口綠燈

led_y2 bit p2.6 ;南北路口黃燈

led_r2 bit p2.7 ;南北路口紅燈

org 0000h

ljmp start

org 0100h

start: mov tmod,#01h ;置t0為工作方式1

mov th0,#3ch ;置t0定時初值50ms

mov tl0,#0b0h

clr tf0

setb tr0 ;啟動t0

clr a

mov p1,a ;關閉不相關的led

loop: mov r2,#20 ;置1s計數初值,50ms*20=1s

mov r3,#20 ;紅燈亮20s

mov second1,#25 ;東西路口計時初值25s

mov second2,#25 ;南北路口計時初值25s

lcall display

lcall state1 ;呼叫狀態1

wait1: jnb tf0,wait1 ;查詢50ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值50ms

mov tl0,#0b0h

djnz r2,wait1 ;判斷1s到否?未到繼續狀態1

mov r2,#20 ;置50ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait1 ;狀態1維持20s

mov r2,#5 ;置50ms計數初值 5*4=20

mov r3,#3 ;綠燈閃3s

mov r4,#4 ;閃爍間隔200ms

mov second1,#5 ;東西路口計時初值5s

mov second2,#5 ;南北路口計時初值5s

lcall display

wait2: lcall state2 ;呼叫狀態2

jnb tf0,wait2 ;查詢50ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值50ms

mov tl0,#0b0h

djnz r4,wait2 ;判斷200ms到否?未到繼續狀態2

cpl led_g1 ;東西綠燈閃

mov r4,#4 ;閃爍間隔200ms

djnz r2,wait2 ;判1s到否?未到繼續狀態2

mov r2,#5 ;置50ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait2 ;狀態2維持3s

mov r2,#20 ;置50ms計數初值

mov r3,#2 ;黃燈閃2s

mov second1,#2 ;東西路口計時初值2s

mov second2,#2 ;南北路口計時顯示2s

lcall display

wait3: lcall state3 ;呼叫狀態3

jnb tf0,wait3 ;查詢100ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值100ms

mov tl0,#0b0h

djnz r2,wait3 ;判斷1s到否?未到繼續狀態3

mov r2,#20 ;置100ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait3 ;狀態3維持2s

mov r2,#20 ;置50ms計數初值

mov r3,#20 ;紅燈閃20s

mov second1,#25 ;東西路口計時初值25s

mov second2,#25 ;南北路口計時初值25s

lcall display

wait4: lcall state4 ;呼叫狀態4

jnb tf0,wait4 ;查詢100ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值100ms

mov tl0,#0b0h

djnz r2,wait4 ;判斷1s到否?未到繼續狀態4

mov r2,#20 ;置100ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait4 ;狀態4維持20s

mov r2,#5 ;置50ms計數初值

mov r4,#4 ;紅燈閃20ms

mov r3,#3 ;綠燈閃3s

mov second1,#5 ;東西路口計時初值5s

mov second2,#5 ;南北路口計時初值5s

lcall display

wait5: lcall state5 ;呼叫狀態5

jnb tf0,wait5 ;查詢100ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值100ms

mov tl0,#0b0h

djnz r4,wait5 ;判斷200ms到否?未到繼續狀態5

cpl led_g2 ;南北綠燈閃

mov r4,#4 ;閃爍200ms

djnz r2,wait5 ;判斷1s到否?未到繼續狀態5

mov r2,#5 ;置100ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait5 ;狀態5維持3s

mov r2,#20 ;置50ms計數初值

mov r3,#2 ;紅燈閃2s

mov second1,#2 ;東西路口計時初值2s

mov second2,#2 ;南北路口計時初值2s

lcall display

wait6: lcall state6 ;呼叫狀態6

jnb tf0,wait6 ;查詢100ms到否

clr tf0

mov th0,#3ch ;恢復t0定時初值100ms

mov tl0,#0b0h

djnz r2,wait6 ;判斷1s到否?未到繼續狀態6

mov r2,#20 ;置100ms計數初值

dec second1 ;東西路口時間減1s

dec second2 ;南北路口時間減1s

lcall display

djnz r3,wait6 ;狀態6維持2s

ljmp loop ;大迴圈

state1: ;狀態1

setb led_g1 ;東西路口綠燈亮

clr led_y1

clr led_r1

clr led_g2

clr led_y2

setb led_r2 ;南北路口紅燈亮

retstate2: ;狀態2

clr led_y1

clr led_r1

clr led_g2

clr led_y2

setb led_r2 ;南北路口紅燈亮

retstate3: ;狀態3

clr led_g1

clr led_r1

clr led_g2

clr led_y2

setb led_r2 ;南北路口紅燈亮

setb led_y1 ;東西路口綠燈亮

retstate4: ;狀態4

clr led_g1

clr led_y1

setb led_r1 ;東西路口紅燈亮

setb led_g2 ;南北路口綠燈亮

clr led_y2

clr led_r2

retstate5: ;狀態5

clr led_g1

clr led_y1

setb led_r1 ;東西路口紅燈亮

clr led_y2

clr led_r2

retstate6: ;狀態6

clr led_g1

clr led_y1

setb led_r1 ;東西路口紅燈亮

clr led_g2

clr led_r2

setb led_y2 ;南北路口紅燈亮

retledmap:

db 3fh,06h,5bh,4fh,66h,6dh ;0,1,2,3,4,5

db 7dh,07h,7fh,6fh,77h,7ch ;6,7,8,9,a,b

db 58h,5eh,7bh,71h,0,40h ;c,d,e,f, ,-end

彙編程式的問題,一個彙編程式的問題

show str mov ax,0b800h mov es,ax 取得顯示緩衝區的首地址 這裡的10h要改成160,在視訊記憶體裡每一行字元佔用160個位元組 mov al,160 dec dh mul dh mov dh,0 dec dl 這裡還要加一條這個,用來把dl中的數翻倍,也就是乘2 因為...

求人幫我寫一段彙編程式,誰給我寫一個最簡單的組合語言程式

32位數,以十進位制顯示,就太麻煩了。我有用16進位制顯示32位暫存器值的子程式,若需要跟我說。誰給我寫一個最簡單的組合語言程式 上來就是lcd人家看得懂麼.org 0000h ajmp main org 0030h main mov p0,00h mov p1,00h mov p2,00h mov...

一道c語言程式設計題,麻煩幫忙看一下我編的程式錯在哪兒

a沒有初始化 del char裡邊,a沒有初始化,就去判斷a 0 導致記憶體洩露 include stdio.h int del char char old,char n return 0 int link string char n,char link new for i j j b 0 i li...