1、#include #define uchar unsigned char #define uint unsigned int sbit RED_A=P15; /东西向灯 sbit YELLOW_A=P14; sbit GREEN_A=P13; sbit RED_B=P12; /南北向灯 sbit YELLOW_B=P11; sbit GREEN_B=P10;uchar zhuangtai=1,shanshuo=0;uchar j;uchar code shuziP0=0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1
2、,0x86,0x8e,0xff;uchar code shuziP2=0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff;void delay(uint x)TMOD=0x01;IE=0x82; TR0=1;while(x-)TH0=(8192-2000)/32; /*2ms 定时*/ TL0=(8192-2000)%32;TR0=0; void qiehuan()uchar k;uchar m;switch(zhuangtai)case 1: /*东西向绿灯与南北向红灯亮*/ whil
3、e(j-)k=j+3;m=j;j=m;delay(250);P0=shuziP0m;P2=shuziP2k;RED_A=1;YELLOW_A=1;GREEN_A=0; RED_B=0;YELLOW_B=1;GREEN_B=1;TR0=0; zhuangtai=2; break;case 2: /*东西向黄灯闪烁,绿灯关闭*/j=4;k=2; while(j-) delay(250);P0=shuziP0k;P2=shuziP2k;YELLOW_A=YELLOW_A;GREEN_A=1; k-; shanshuo=0; zhuangtai=3; break;case 3: /*东西向红灯,南北向
4、绿灯亮*/j=5;while(j-)k=j+3;m=j;j=m; P0=shuziP0k;P2=shuziP2m;RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0;delay(250); zhuangtai=4; break;case 4: /*南北向黄灯闪烁 2 次*/j=4;k=2; while(j-) P0=shuziP0k;P2=shuziP2k;YELLOW_B=YELLOW_B;GREEN_B=1;k-;delay(250);TR0=0;shanshuo=0; zhuangtai=1;break; void main()while(1)j=5;qiehuan();