
晚上随手写,也未调试,权当看看
程序有不严谨地方还得调试修改
#include <REGX51H>
#define STATUS_1S 1
#define STATUS_2S 2
#define STATUS_3S 3
#define STATUS_4S 4
#define STATUS_5S 5
#define STATUS_15S 15
#define STATUS_28S 28
#define STATUS_29S 29
#define STATUS_30S 30
unsigned char flag,status,status_temp=1,status_temp_;
sbit K1 = P0^0;
sbit K2 = P0^1;
sbit RLED = P0^2;
sbit YLED = P0^3;
sbit GLED = P0^4;
void Init(void)
{
ET0=1;
TR0=1;
RLED=0; //亮
YLED=0;
GLED=0;
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1; //灭,闪一次
YLED=1;
GLED=1;
} break;
case STATUS_2S: //1S
{
RLED=0; //亮,闪一次
YLED=0;
GLED=0;
} break;
case STATUS_3S: //1S
{
RLED=1; //灭
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
void Init_Timer0(void)
{
TMOD=0x01;
// ET0=1;
// TR0=1;
EA=1;
TH0=0X3C;
TL0=0XB0; // 未计算,偷楼上的
}
void M_Start(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //红亮
while(status_temp)
{
switch (status)
{
case STATUS_1S:
{
if(status_temp_==1)
{
YLED=0;
}
} break;
case STATUS_2S:
{
if(status_temp_==1)
{
YLED=1;
}
} break;
case STATUS_3S:
{
if(status_temp_==1)
{
YLED=0;
status_temp_=0;
}
} break;
case STATUS_15S: //15S灭,绿亮
{
RLED=1;
GLED=0;
} break;
case STATUS_28S:
{
GLED=1;
} break;
case STATUS_29S:
{
GLED=0;
} break;
case STATUS_30S:
{
GLED=1;
status=0;
status_temp_=1;
} break;
}
}
ET0=0;
TR0=0;
status=0;
status_temp=1;
YLED=1;
}
void M_End(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //亮 1次
YLED=0;
GLED=0;
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1; //灭一次
YLED=1;
GLED=1;
} break;
case STATUS_2S: //1S
{
RLED=0; //亮二次
YLED=0;
GLED=0;
} break;
case STATUS_3S: //1S
{
RLED=1; ////灭二次
YLED=1;
GLED=1;
} break;
case STATUS_4S: //1S
{
RLED=0; ////亮三次
YLED=0;
GLED=0;
} break;
case STATUS_5S: //1S
{
RLED=1; ////灭三次
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
main()
{
Init();//单片机初始化
Init_Timer0();//定时器初始化
while(1)
{
if(K1==0)
M_Start();//模拟开始
if(K2==0)
M_End();//模拟结束
}
}
void interrupt_time0() interrupt 1 //核对头文件,一致就好
{
TH0=0X3C;
TL0=0XB0;
flag++;
if(flag==20)
{
status++;
flag=0;
}
}
以上就是关于C51单片机程序设计题,要求用C语言做,模拟交通灯控制单片机电路,答案要详细具体。全部的内容,包括:C51单片机程序设计题,要求用C语言做,模拟交通灯控制单片机电路,答案要详细具体。、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)