|
" ]; z4 e5 [$ M( b/ t3 p/ [. D#include<reg51.h>& c; o# x( Q c* B
#define uchar unsigned char
7 V) J5 P/ l- y* }, h" T3 A- H#define uint unsigned int
% G, D6 S' M6 j: f3 ^ \) \# [3 asbit RED_A=P0^0; //东西向灯. V3 R) S+ s0 s- y! D6 G3 [
sbit YELLOW_A=P0^1;1 g4 N0 R! e$ U8 d. V
sbit GREEN_A=P0^2;0 W8 N3 D, ~! n, y# U- r# V. Z# g
sbit RED_B=P0^3; //南北向灯1 s, }, y3 u& q# u" v
sbit YELLOW_B=P0^4;) o8 d. s1 X' i7 n
sbit GREEN_B=P0^5;
( F4 {8 u6 A; [+ P/ n2 I) x i9 V4 |uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量
1 E& }7 G) e) d
- ]! ~/ E" k, l$ T. i# r( A//延时0 }! x) s9 L' B/ f" R
void DelayMS(uint x). J i0 t# r; M5 d& t; w% i
{! X! k, [# X D8 m! B' X0 r
uchar i;9 y ~6 d1 D1 Q6 g' [3 K
while(x--) for(i=0;i<120;i++);
, H9 Y# b# T8 r& @ c}
. X6 w* Z/ y3 S//交通灯切换+ X# t Z1 p, j6 k$ g
void Traffic_Light()
. {# Z) ]) K0 W; p4 D# c0 k, o{
& v9 ]( F9 y/ D: o& f& |$ m/ }/ D1 Aswitch(Operation_Type)
& b0 `9 p5 f, W: R& y" j/ W& J{
* {" S7 M# x. n* ~/ X) W3 ?! R- Pcase 1: //东西向绿灯与南北向红灯亮
# c/ u/ O5 v1 l3 T2 B6 mRED_A=1;YELLOW_A=1;GREEN_A=0;
" K. H ^0 v6 T/ ^9 P! E hRED_B=0;YELLOW_B=1;GREEN_B=1;
h# ~% w: W2 \ A: m. N: JDelayMS(2000);
- l9 }) P0 L: x# k9 d; C) G* U) `/ lOperation_Type=2;/ W% b" r% t' o) c
break;+ T" {9 z0 V& R5 a) U/ z8 O. E
case 2: //东西向黄灯闪烁,绿灯关闭8 |$ l; F! @3 _ V( _* D
DelayMS(300);" i0 i4 `) y0 S+ S2 a- K1 C
YELLOW_A=~YELLOW_A;GREEN_A=1;
p* V. B8 b0 t$ v j: Pif(++Flash_Count!=10) return; //闪烁 5 次
4 T! j6 {4 E' `+ OFlash_Count=0;
$ G3 q& Q& ^ l4 S3 v5 v$ u+ ROperation_Type=3;
4 i/ z, [3 \* r/ Fbreak;$ h+ V4 p2 {& ~0 e, f7 O8 {
case 3: //东西向红灯,南北向绿灯亮9 m3 Q0 S3 t+ o- h" B* ~
RED_A=0;YELLOW_A=1;GREEN_A=1;! I& A, {0 }- S0 e" A. z+ K7 s. ~
RED_B=1;YELLOW_B=1;GREEN_B=0;; j2 l! G( ]9 q6 y1 E2 j& n
DelayMS(2000);; m/ U6 L! Y8 [, v- n6 C
Operation_Type=4;+ d t0 o/ ~( |* L
break;
# H& p% v- i$ |. K4 d* }5 kcase 4: //南北向黄灯闪烁 5 次% V9 S2 _+ {- {" _4 f9 P7 E
DelayMS(300);, v$ m `/ p5 D0 E6 R( i
YELLOW_B=~YELLOW_B;GREEN_B=1;
0 K& P( r0 S# \" @; @- L% fif(++Flash_Count!=10) return;. D) ^5 q7 J" B. ?* ]8 r
Flash_Count=0;$ z w2 {. O, b* u
Operation_Type=1;4 L3 V) q* T' m7 k& E$ `2 ^: @
}2 J% \1 d: }2 j L; Z1 Y. o9 [
}
3 ^* L; f ~+ A: d//主程序
5 h' B9 u0 V! X Q# C4 uvoid main()
0 t0 {$ ^/ D5 O- q- w3 n( W% f; k{
( Y- G1 \' P" W4 C. V3 \while(1) Traffic_Light();
0 F8 A: N7 j6 X( w" @} % R+ w" g4 S& [: Y l1 v5 j
: ~" B. |- `, g# G2 ^/ `1 U
a& K2 K$ I" p5 c5 R0 c- C4 V! B/ e; t- E6 k1 m
|
|