#有没有大佬能给小弟解决这个问题啊
#51单片机交通灯
#c语言
#基于51单片机的交通灯的仿真
#问题就是为什么刚开始南北不亮,最后会闪烁,求大哥修改程序
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit shiwei=P1^0; //定义数码管位选线
sbit gewei=P1^1;
sbit nb_shiwei=P1^2;
sbit nb_gewei=P1^3;
sbit nb_red=P0^3; //定义P0口控制led灯
sbit nb_yellow=P0^4;
sbit nb_green=P0^5;
sbit dx_red=P0^0;
sbit dx_yellow=P0^1;
sbit dx_green=P0^2;
uchar second,temp1,temp2,thired;
uchar code shuma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint ms) //延时函数
{
uint a,b;
for(a=ms;a>0;a--)
for(b=124;b>0;b--);
}
void display1( ) //显示函数
{
uchar i;
for(i=0;i<50;i++)
{
temp1=second%10;
P2=shuma[temp1];
gewei=0;
delay(10);
shiwei=1;
gewei=1;
temp1=second/10;
P2=shuma[temp1];
shiwei=0;
delay(10);
shiwei=1;
gewei=1;
}
if (second>0)
second--;
else second=60;
}
void display2( ) //显示函数
{
uchar i;
for(i=0;i<50;i++)
{
temp2=thired%10;
P2=shuma[temp2];
nb_gewei=0;
delay(10);
nb_shiwei=1;
nb_gewei=1;
temp2=thired/10;
P2=shuma[temp2];
nb_shiwei=0;
delay(10);
nb_shiwei=1;
nb_gewei=1;
}
if (thired>0)
thired--;
else thired=60;
}
void state1()
{ char i;
second=5;
thired=8;
P0=0xff;
nb_red=0;
dx_green=0;
for(i=5;i>=0;i--)
display1();
display2();
}
void state2()
{ char i;
second=3;
P0=0xff;
nb_red=0;
for (i=3;i>=0;i--)
{ dx_yellow=~dx_yellow;
display1();
display2();
}
}
void state3()
{ char i;
second=5;
thired=8;
P0=0xff;
nb_green=0;
dx_red=0;
for(i=5;i>=0;i--)
display1();
display2() ;
}
void state4()
{
char i;
second=3;
P0=0xff;
dx_red=0;
for (i=3;i>=0;i--)
{ nb_yellow=~nb_yellow;
display1();
display2();
}
}
void main()
{while(1)
{
state1();
state2();
state3();
state4();
}
}
测试一些的C语言程序可以安装 Dev C++
Dev-C++ download | SourceForge.net,能编译成exe文件我不懂如何使用#51单片机#编程,因此无法提供与问题直接相关的解决方案。对于参考资料中的内容,我可以提供一些解释和简要介绍:
综上所述,我的回答是无法提供与#51单片机#中的内存泄露问题直接相关的解决方案。