单片机 控制编程

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:20:00
实现
状态1:红 黄 绿灯依次亮一分钟
状态2:红 黄 绿灯依次闪烁20秒
状态1和状态2轮流工作, 无限循环
以上是题目

如果假设我设 红为P1.1 当P1.1=1 红亮 P1.1=0红暗
绿为P1.2 当P1.2=1 绿亮 P1.2=0绿暗
黄为P1.3 当P1.3=1 黄亮 P1.3=0黄暗

总开关 P1.0 当P1.0=1时电源闭合,P1.0=0时电源断开.
初始设定灯全暗

请教如何实现,刚学到汇编就不太懂了
不好意思 把 黄设为P1.2 绿为P1.3

tim equ 50h
sta1: setb p1.1
mov time,#03h
lcall delay ;延时20s的程序
setb p1.2
mov time,#03h
lcall delay
setb p1.3
mov time,#03h
lcall delay
sta2: setb p1.1
mov time,#01h
lcall delay ;延时20s的程序
setb p1.2
mov time,#01h
lcall delay
setb p1.3
mov time,#01h
lcall delay
sta3: sjmp sta1
end
延时程序自己整吧,也不知道好不好用

MOV P1,#0;置灯全暗
JNB P1.0,$;P1.0=0时则等待通电
STA:SETB P1.1;点亮绿灯(开始状态1)
LCALL LLL1;延时1分钟
CLR P1.1;灭绿灯
SETB P1.2;亮黄灯
LCALL LLL1;延时1分钟
CLR P1.2;灭黄灯
SETB P1.3;亮红灯
LCALL LLL1;延时1分钟
CLR P1.3;灭红灯
MOV R0,#40;开始绿灯闪烁(开始状态2)
KKKK1:SETB P1.1;亮绿灯
LCALL LLL250;延时250ms
CLR P1.1;灭绿灯
LCALL LLL250;延时250ms
DJNZ R0,KKKK1;绿灯未闪够20S转继续
MOV R0,#40;开始黄灯闪烁
KKKK2:SETB P1.2;亮黄灯
LCALL LLL250;延时250ms