发布于 2011-09-19 19:24:49
6楼
前提是:司机都遵守红绿灯规则?
传感器上下=AB=00,01,10,11 0=无车
对应灯上下=XY=11,10,01,00 0=绿灯
对AB取反即可
纪录AB的次数 上下=M,N
上有车被检测时,N++,下有车被检测M++, N==M时,灯XY=00,N<M时,灯XY=10,N>M时,灯XY=01(没有XY=11,不可能都亮红灯),
举例:如先上有车进则N++,M=0,N=1,N>M,XY=01则上亮绿,下亮红,此车从上进入到下被检测,M++,M=N,则,XY=00,都亮绿灯,如果在第一车进去后还没到达B点,M=0,N=1,由于上灯绿,再有1车进入,则N++,N=2。第一车到达,M++,此时M=1,N=2,N>M,灯XY=01,上灯绿,下灯红,第2车到达B点被检测,M++,M=2,此时M=N,灯XY=00,同时绿灯。
程序如下:
L 0
T #M
T #N
------------------------
AN I0.0
JC end1
L #N
L 1
+I
T #N
end1:nop 0
-----------------------
AN I0.1
JC end2
L #M
L 1
+I
T #N
end2:nop 0
---------------------
L #M
L #N
==I //00
JNB NXT1
S Q0
R Q1
S Q2
R Q3
JU END
NXT1:L #M
L #N
>I
JNB NXT2
R Q0
S Q1
S Q2
R Q3
NXT2: L #M
L #N
<I
JNB END
S Q0
R Q1
R Q2
S Q3
END:NOP 0
STL学习中