交通灯(一)
南北方向
绿 绿 25 秒
东西方向
红 红 30 秒 秒
黄 黄 5 秒
绿 绿 25 秒 秒
红 红 30 秒
黄 黄 5 秒 秒
#include<reg52.h>
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include<math.h>
char unsigned char int
unsigned int #define ulang unsigned lang static unsigned char count; code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管 0-9 uchar smg[8];
//定义缓冲区
uint
we,ns,h,j;
aaa();
bbb(); int eee(); void delay(unsigned int cnt) {
while(--cnt); }
void display( ) {
smg[0]=tab[we/10];
smg[1]=tab[we%10];
smg[2]=0x00;
smg[3]=0x00;
smg[4]=0x00;
smg[5]=0x00;
smg[6]=tab[ns/10];
smg[7]=tab[ns%10];
}
void main() {
uchar i;
TMOD |=0x01;
//定时器 0 10ms in 12M crystal 用于计时 TH0=0xd8;
//初值 TL0xf0; ET; TR0=1;
EA =1;
display();
while(1)
{
for(i=0;i<8;i++)
//显示函数
{
P0=smg[i]; P2=i; delay(100);
}
ccc(); display( );
}
} void timer() interrupt 1
{
TH0=0xd8;
//重新赋值
TL0=0xf0;
count++;
}
int aaa() {
if(j<25)
{
if(j==1) { we=30,ns=25; } ns--;
we--;
P1=0xde; return 0; }
if(25<=j<30)
{
if(j==26)
{
ns=5; }
P1=0xee;
ns--;
we--;
return 0;
} }
int bbb()
{
if(h<25)
{
if(h==1) { we=25,ns=30; } ns--;
we--;
P1=0xf3; return 0; }
if(25<=h<30)
{
if(h==26)
{
we=5; }
P1=0xf5;
ns--;
we--;
return 0;
}
}
int eee()
{
j=0; h=0;
return 0;
}
int ccc()
{
if (count==100)
{
count=0;
j++; if ( (j>30)&&(j!=61))
{ h++;
bbb();
return 0;
}
if(j==61)
{ eee(); return 0;}
aaa();
return 0;
}
}
相关热词搜索: 交通灯