标题: 单片机交通灯流程图要如何画啊?求帮助 [打印本页]
作者: 大猫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
要像这样子的流程图
作者: 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.51hei.com/bbs/) |
Powered by Discuz! X3.1 |