|
( e* k( ]. ^/ c" C7 a5 G8 k, r
#include<reg51.h>: Y9 q& S; P) e% a- K% \
#define uchar unsigned char8 P" c7 z u; J3 t; {
#define uint unsigned int; b* M3 W4 H3 N. z" p- v
sbit RED_A=P0^0; //东西向灯
6 _ Z- k( a, r. u% K) ~sbit YELLOW_A=P0^1;/ g/ s" E4 Y5 s( g9 G+ T
sbit GREEN_A=P0^2;3 d0 f& x, u ~ l, ~4 B* y/ i
sbit RED_B=P0^3; //南北向灯' {& f; v3 e) X. R( ]( X
sbit YELLOW_B=P0^4;$ O# I/ e, @* N* A$ w* I
sbit GREEN_B=P0^5;
& z* ~9 |( N/ R: P4 F/ guchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量
# N$ P: Z- z+ M5 J' v/ N' ^9 d
# z* O" ]( w5 _//延时7 I- i4 V9 |0 P) X
void DelayMS(uint x)
0 L, y; f3 O" X( L* n/ ~{
; K3 a9 ^( N0 c8 q2 W6 [uchar i;
3 B4 e& T4 Y- Hwhile(x--) for(i=0;i<120;i++);
) r/ C1 w h$ Y# {. U- t}4 u; L# W2 @( t0 B- @5 I
//交通灯切换
. l; K/ t r3 f# N+ R ?void Traffic_Light(), G0 k7 B9 S U5 x+ ~
{
! O6 G9 p% |: q1 `% wswitch(Operation_Type)6 `- @& D1 ?( v5 X9 |" q4 y9 w
{
/ G5 g) C8 e- [' n @; r& Gcase 1: //东西向绿灯与南北向红灯亮; e% d2 T1 Z& P, d- \( ]
RED_A=1;YELLOW_A=1;GREEN_A=0;
9 Z3 @3 L) [- w% A3 NRED_B=0;YELLOW_B=1;GREEN_B=1;) u: _/ f2 t$ G9 W& v6 @
DelayMS(2000);% l1 k6 ~4 D6 b
Operation_Type=2;4 o4 Q3 i: \9 @* ` r$ E/ X
break;3 `' m% P, [- e
case 2: //东西向黄灯闪烁,绿灯关闭
% h- H: [ w) l$ i$ pDelayMS(300);/ Y8 ?, D) z7 O, _
YELLOW_A=~YELLOW_A;GREEN_A=1;
~( A4 n/ E% K% Gif(++Flash_Count!=10) return; //闪烁 5 次
& Z. t7 A( t9 I- n" y. L& N6 Z) Y( CFlash_Count=0;
$ r R$ I0 J7 v- j9 vOperation_Type=3;
* j- r1 w8 {; h3 N4 O) d/ Obreak;
. p& r9 E7 E" d4 |, Dcase 3: //东西向红灯,南北向绿灯亮( T3 u# H* @6 b1 C: C5 e
RED_A=0;YELLOW_A=1;GREEN_A=1;' M- P' N+ v& K5 T B3 |5 j
RED_B=1;YELLOW_B=1;GREEN_B=0;+ r+ V2 c. Z# |: M; ?5 Y% C, V. }
DelayMS(2000);6 k! w5 h" Y- O& V) |4 I
Operation_Type=4;/ |: u6 p: o$ G) `% J5 [6 K
break;) f/ |" E% C, n" z
case 4: //南北向黄灯闪烁 5 次
1 a2 Q0 c- _5 }7 b5 c$ {DelayMS(300);
8 U6 Q# N# k4 h3 ~% ~YELLOW_B=~YELLOW_B;GREEN_B=1;
: m) ^. S9 x7 X. ]if(++Flash_Count!=10) return;+ D- Z+ f3 X3 P2 {" m$ l0 H
Flash_Count=0;2 l- p& n0 f: _7 j
Operation_Type=1;8 H$ j3 M2 D5 z1 K
}
% |" {! [+ A. y7 b- n+ O* y- r}5 ^: n' p+ S( E& b+ c* i
//主程序/ }" ?. ?& R: j7 a/ @7 @0 M- X
void main()
% v p, ?2 |, d* Z, @* M& `{
8 f5 p4 k W0 m0 O, Pwhile(1) Traffic_Light();# @( [& ]& }7 P# B7 C+ g* J
}
( c9 s2 s4 C1 l {/ s- Q6 s+ y6 }) C! S$ ]5 K" Z
z& l2 y G6 A- Y- w: e) S' n1 l. U4 E. V1 x/ e
|
|