找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2719|回复: 4
收起左侧

单片机交通灯流程图要如何画啊?求帮助

[复制链接]
ID:781861 发表于 2020-6-17 14:54 | 显示全部楼层 |阅读模式
50黑币
代码清单
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 捕获.PNG 要像这样子的流程图

回复

使用道具 举报

ID:123289 发表于 2020-6-17 18:37 | 显示全部楼层
1、不要怕错
2、不追求完美
3、你如何想的,就在方框中写出来。
多做几个,就OK了。
回复

使用道具 举报

ID:782419 发表于 2020-6-17 20:16 | 显示全部楼层
我感觉你真的好厉害,居然用汇编写程序!在学校的时候好像学过的是汇编,好像根本就不会用。想给你提一点建议:如果可以的话用keil+vscode开发试试吧。可能会好很多!keil用来编译,调试,vscode用来代码编辑。当然用的C语言。应该不难的,我之前从没用过C,不过也会一点了!
回复

使用道具 举报

ID:123289 发表于 2020-6-19 17:09 | 显示全部楼层
是的,现在对照一下,流程图与你的程序相符吗?
回复

使用道具 举报

ID:367460 发表于 2020-6-20 14:19 | 显示全部楼层
wufeng391 发表于 2020-6-17 20:16
我感觉你真的好厉害,居然用汇编写程序!在学校的时候好像学过的是汇编,好像根本就不会用。想给你提一点建 ...

萌新问问,用vscode写代码有啥优点吗?    不是也有人用notepad++ , 和keil本身写代码有啥区别?学习学习, 望回复.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表