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

2022-01-19 01:03:47 字數 8706 閱讀 8450

1樓:匿名使用者

真巧,我今天很閒

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

2樓:匿名使用者

給你一個更加完整的程式

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

請高手幫小弟設計簡單的微控制器程式

用一個帶感測器裝置區分白球 低電平 和黑球 高電平 每2秒探測一次,在探測到一次黑球時執行動作。org 0000h ajmp main org 0030h main mov a 01h mov p1.0 a jn p1.0 loop1 lalcal delay1 loop1 ajmp loop2 執...

微控制器專案的開發流程,微控制器應用程式的開發步驟是什麼?

開發流程如下 1 cpu開發。開發微控制器中的cpu匯流排寬度,能夠有效完善微控制器資訊處理功能緩慢的問題,提高資訊處理效率與速度,開發改進 處理器的實際結構,能夠做到同時執行2 3個cpu,從而大大提高微控制器的整體效能。2 程式開發。嵌入式系統的合理應用得到了大力推廣,對程式進行開發時要求能夠自...

微控制器序列不能傳送資料,求指點。程式如下

問題很簡單,也很多!首先你已經開串列埠中斷也就是es 1,需要相應的串列埠中斷服務程式,其次et1不需要51定時器1方式2就是用作串列埠通訊波特率的,最後你定義的unsigned char table 直接這樣傳送你不可以的,如果需要傳送漢字建議直接呼叫stdio標準輸入輸出庫中的printf函式,...