c语言switch语句的表达式是字符,C语言switch语句问题,请单片机大虾门帮忙看看代码...

这是调好的,拿去吧

#include "reg52.h"

typedef unsigned char u8 ;  //定义变量参//

typedef unsigned int  u16  ;

sbit     RED_A=P0^2; //A方向红灯

sbit     YELLOW_A=P0^3;//A方向黄灯

sbit     GREEN_A=P0^4;//A方向绿灯

sbit     REDC_A=P0^0;  //A方向人行道红灯

sbit     GREENC_A=P0^1;  //A方向人行道绿灯

sbit     RED_B=P0^5;

sbit     YELLOW_B=P0^6;

sbit     GREEN_B=P0^7;

sbit     REDC_B=P2^0;

sbit     GREENC_B=P2^1;

u8 i=1;

void delay5s(void)   //误差 0us

{

u8 a,b,c;

for(c=165;c>0;c--)

for(b=100;b>0;b--)

for(a=150;a>0;a--);

}

void delay30s(void)   //误差 0us

{

u8 a,b,c;

for(c=254;c>0;c--)

for(b=232;b>0;b--)

for(a=253;a>0;a--);

}

void jiaotongdeng()

{

switch(i)

{

case 1:      RED_A=1;GREEN_B=1;GREENC_B=1;REDC_A=0;

//A方向红灯    B向绿灯 B向人行道绿灯 A向行道红灯 亮灯

RED_B=0;YELLOW_B=0;REDC_B=0;GREEN_A=0;GREENC_A=0; YELLOW_A=0  ;

//B向红灯 B黄灯 B向行道红灯  A向绿灯 A向黄灯 A向行道绿灯    熄灯

delay30s();

RED_A=~RED_A;GREEN_B=~GREEN_B;GREENC_B=~GREENC_B;REDC_A=~REDC_A;

//A方向红灯 B向绿灯 B向人行道绿灯 A向行道绿灯 闪亮灯

YELLOW_A=0;GREEN_A=0;GREENC_A= 0;RED_B=0;YELLOW_B=0;REDC_B=0;

//A方向黄灯 绿灯 行道绿灯   B方向红灯 黄灯  行道红灯 熄灯

delay5s();

break;

case 2:  RED_B=1;GREEN_A=1;GREENC_A=1;REDC_B=0; //B向红灯亮灯

RED_A=0;YELLOW_B=0;REDC_A=0;GREEN_B=0;GREENC_B=0; YELLOW_B=0  ;  //熄灯

delay30s();

RED_B=~RED_B;GREEN_A=~GREEN_A;GREENC_A=~GREENC_A;REDC_B=~REDC_B;

//A方向红灯 B向绿灯 B向人行道绿灯 A向行道绿灯 闪亮灯

YELLOW_B=0;GREEN_B=0;GREENC_B= 0;RED_A=0;YELLOW_A=0;REDC_A=0;

//A方向黄灯 绿灯 行道绿灯   B方向红灯 黄灯  行道红灯 熄灯

delay5s();

break;

if(i==2) i=0;

}

}

void main()

{

while(1)

{

jiaotongdeng();

if(i==2)i=1;

else  i++;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值