第3个回答 2009-06-12
//第一组,Rg(P1.0) r(P1.1) G(P1.2) Y(P1.3)
//第二组,Rg(P1.4) r(P1.5) G(P1.6) Y(P1.7)
#include<AT89X51.H>
void delay(int a) //12M 0.1秒
{
int n;
n=a*2;
do
{
TH0=0x3c;
TL0=0xb0;
TR0=1; //允许T0计数
while(!TF0); //算时间
TF0=0;
n-=1;
}
while(n);
TR0=0;
}
void jump()
{
int i;
//第一组
P1=0x9e;delay(560); //56秒
for(i=0;i<3;i++) //绿灯闪烁3秒
{
P1=0xde;delay(3); //绿灯灭
P1=0x9e;delay(7); //绿灯亮
}
P1=0x5e; //黄灯亮1秒
delay(10);
//第二组
P1=0xe9;delay(560);
for(i=0;i<3;i++)
{
P1=0xed;delay(3);
P1=0xe9;delay(7);
}
P1=0xe5;
delay(10);
}
main()
{
TMOD=0x01;
for(;;)
{jump();}
}