单片机 交通灯程序
时间:10-02
整理:3721RD
点击:
求大神们解释下主函数里面每个程序语句的意思!谢谢!
#include<reg52.h>
#define uchar unsigned char
bit flag1=0,flag2=0;
sbit S1=P3^0;
sbit S2=P3^1;
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0} ;
uchar dis[8];
uchar ns=30,we=30;
uchar t1_counter=0;
void delayms(uchar ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void display(uchar dis[ ])
{
uchar i;
for(i=0;i<8;i++)
{
P0=seg[dis[i]];
P2|=i;
delayms(1);
}
}
void main(void)
{
TMOD=0x10;
TR1=1;
EA=1;
ET1=1;
while(1)
{
dis[0]=ns/10;
dis[1]=ns%10;
dis[2]=11;
dis[3]=11;
dis[4]=11;
dis[5]=11;
dis[6]=we/10;
dis[7]=we%10;
display(dis) ;
if(S1==0)
{
delayms(10);
while(S1==0);
if(S1)
{
delayms(10);
if(S1)
{
while(1)
{
P1=0xcc;
delayms(100);
P1=0xff;
delayms(100);
EA=0;
if(S2==0)
{
delayms(10);
while(S2==0);
if(S2)
{
delayms(10);
if(S2)
{
break;
}
}
}
}
}
}
}
if(S2==0)
{
delayms(10);
while(S2==0);
if(S2)
{
delayms(10);
if(S2)
{
P1=0x3c;
EA=1;
}
}
}
}
}
void t1_int(void) interrupt 3
{
TH1=15536/256;
TL1=15536%256;
if(++t1_counter==20)
{
t1_counter=0;
if(flag1==0)
{
if(flag2==0)P1=0xdb;
else P1=0x7e;
if((--ns==0)||(--we==0))
{
flag2=~flag2;
ns=6;
we=6;
flag1=~flag1;
}
}
if(flag1==1)
{
P1=0xb7;
if((--ns==0)||(--we==0))
{
flag1=~flag1;
ns=30;
we=30;
}
}
}
}
#include<reg52.h>
#define uchar unsigned char
bit flag1=0,flag2=0;
sbit S1=P3^0;
sbit S2=P3^1;
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0} ;
uchar dis[8];
uchar ns=30,we=30;
uchar t1_counter=0;
void delayms(uchar ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void display(uchar dis[ ])
{
uchar i;
for(i=0;i<8;i++)
{
P0=seg[dis[i]];
P2|=i;
delayms(1);
}
}
void main(void)
{
TMOD=0x10;
TR1=1;
EA=1;
ET1=1;
while(1)
{
dis[0]=ns/10;
dis[1]=ns%10;
dis[2]=11;
dis[3]=11;
dis[4]=11;
dis[5]=11;
dis[6]=we/10;
dis[7]=we%10;
display(dis) ;
if(S1==0)
{
delayms(10);
while(S1==0);
if(S1)
{
delayms(10);
if(S1)
{
while(1)
{
P1=0xcc;
delayms(100);
P1=0xff;
delayms(100);
EA=0;
if(S2==0)
{
delayms(10);
while(S2==0);
if(S2)
{
delayms(10);
if(S2)
{
break;
}
}
}
}
}
}
}
if(S2==0)
{
delayms(10);
while(S2==0);
if(S2)
{
delayms(10);
if(S2)
{
P1=0x3c;
EA=1;
}
}
}
}
}
void t1_int(void) interrupt 3
{
TH1=15536/256;
TL1=15536%256;
if(++t1_counter==20)
{
t1_counter=0;
if(flag1==0)
{
if(flag2==0)P1=0xdb;
else P1=0x7e;
if((--ns==0)||(--we==0))
{
flag2=~flag2;
ns=6;
we=6;
flag1=~flag1;
}
}
if(flag1==1)
{
P1=0xb7;
if((--ns==0)||(--we==0))
{
flag1=~flag1;
ns=30;
we=30;
}
}
}
}
niTmde zai dou 我
这个程序正确吗? 有没有电路图啊?
are you kidding ?
你可以看看郭天祥的10天学会单片机视频,
会让你受益匪浅。
这都不懂?
晕了,自己要写学习学习呀
加扣扣私聊。。