標題: 單片機交通燈流程圖要如何畫啊?求幫助 [打印本頁]
作者: 大貓abc 時間: 2020-6-17 14:54
標題: 單片機交通燈流程圖要如何畫啊?求幫助
代碼清單
org 0000h
ljmp main
org 000bh
ljmp inti0
org 0030h
main:mov tmod,#01h
mov ie,#82h
mov th0,#4ch
mov tl0,#00h
mov sp,#60h
mov 31h,#30 ;東西綠燈初值30秒
mov 32h,#30 ;南北紅燈初值30秒
clr 4fh ;清標志位
clr p1.1 ;開東西綠燈
clr p1.5 ;開南北紅燈
setb tr0 ;啟動T0
loop:lcall key ;調用應急按鍵判斷
ljmp loop
inti0:push psw
clr ea
mov th0,#4ch
mov tl0,#00h
inc 35h
mov a,35h
cjne a,#20,out ;判1秒是否到時
mov 35h,#00
jb 4fh,yi ;判別標志位
dec 31h ;東西時間每秒減1
dec 32h ;南北時間每秒減1
mov a,31h
cjne a,#05,out ;判是否到25秒
setb p1.1 ;東西綠燈閃滅3秒
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1 ;滅東西綠燈
sjmp er
out:setb ea
pop psw
reti
er:clr p1.2 ;東西黃燈亮2秒
mov 33h,#4 ;延時2秒
loop1:lcall del500ms
djnz 33h,loop1
setb p1.2 ;2秒后滅東西黃燈
clr p2.1
mov 31h,#20 ;東西時間賦20秒初值
mov 32h,#20 ;南北時間賦20秒初值
setb 4fh
setb p1.5 ;關南北紅燈
clr p1.0 ;點亮東西紅燈
clr p1.6 ;點亮南北綠燈
sjmp out
yi:dec 31h ;東西時間每秒減1
dec 32h ;南北時間每秒減1
mov a,31h
cjne a,#5,out ;判是否到15秒
setb p2.7 ;
setb p1.6 ;南北綠燈閃滅3秒
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6 ;關南北綠燈
clr p1.7 ;南北黃燈亮2秒
mov 34h,#4 ;延時2秒
loop2:lcall del500ms
djnz 34h,loop2
setb p1.7 ;2秒后滅南北黃燈
clr p2.7 ;
mov 31h,#30 ;東西時間重賦30秒初值
mov 32h,#30 ;南北時間重賦30秒初值
clr p1.1 ;點亮東西綠燈
clr p1.5 ;點亮南北紅燈
setb p1.0 ;關東西紅燈
clr 4fh
ljmp out
table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;0-9數字
del1ms:mov r7,#10 ;1ms延時子程序
d1:mov r6,#50
djnz r6,$
djnz r7,d1
ret
del500ms:mov r5,#5 ;500ms延時子程序
del3:mov r4,#200
del4:mov r3,#250
djnz r3,$
djnz r4,del4
djnz r5,del3
ret
key:jb p1.3,keyout
jnb p1.3,$
clr ea
inc 36h
mov a,36h
cjne a,#2,key4
mov 36h,#00
setb p1.6 ;東西綠燈閃滅3秒
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6 ;滅東西綠燈
clr p1.7 ;東西黃燈亮2秒
mov 33h,#4 ;延時2秒
loop3:lcall del500ms
djnz 33h,loop3
setb p1.7 ;2秒后滅東西黃燈
setb p1.0 ;關東西紅燈
setb p1.6 ;關南北綠燈
clr p1.1 ;開西綠燈
clr p1.5 ;開南北紅燈
setb ea
sjmp keyout
key4:clr p1.6 ;開南北綠燈
clr p1.0 ;開東西紅燈
setb p1.1
setb p1.2
setb p1.3
setb p1.4
setb p1.5
setb p1.7
keyout:ret
end
192220CB-FE6E-4022-8C42-4042AE76E1D1.png (20.64 KB, 下載次數: 34)
下載附件
2020-6-17 14:49 上傳
捕獲.PNG (30.11 KB, 下載次數: 31)
下載附件
2020-6-17 14:54 上傳
要像這樣子的流程圖
作者: yzwzfyz 時間: 2020-6-17 18:37
1、不要怕錯
2、不追求完美
3、你如何想的,就在方框中寫出來。
多做幾個,就OK了。
作者: wufeng391 時間: 2020-6-17 20:16
我感覺你真的好厲害,居然用匯編寫程序!在學校的時候好像學過的是匯編,好像根本就不會用。想給你提一點建議:如果可以的話用keil+vscode開發試試吧。可能會好很多!keil用來編譯,調試,vscode用來代碼編輯。當然用的C語言。應該不難的,我之前從沒用過C,不過也會一點了!
作者: yzwzfyz 時間: 2020-6-19 17:09
是的,現在對照一下,流程圖與你的程序相符嗎?
作者: 昆明路口賣提莫 時間: 2020-6-20 14:19
萌新問問,用vscode寫代碼有啥優點嗎? 不是也有人用notepad++ , 和keil本身寫代碼有啥區別?學習學習, 望回復.
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |