交通灯定时器使用的求助
时间:10-02
整理:3721RD
点击:
这是一个利用定时器来精准控制交通灯的程序,我想问下定时器在这里设置好了,后面只有一个溢出中断服务程序 他所谓的定时器在交通灯亮的程序块里好像没有出现啊?怎么实现精准控制延时的? 大神求助
main()
{
TMOD= 0X10;
EA= 1;
ET1= 1;
TH1= 0x3c;
TL1= 0xb0;
TR1= 1;
num= 0;
while(1)
{
if(num<31)
{
P2= 0xcd; //11001101
P3= 0xfe; //11111110
time= (30-num);
display();
}
if(num>30&&num<34)
{
P2= 0xd6; //11010110
P3= 0xfe; //11111110
time= (34-num);
display();
}
if(num>33&&num<65)
{
P2= 0x7a; //01111010
P3= 0xfd; //11111101
time= (64-num);
display();
}
if(num>64&&num<68)
{
P2= 0xba; //10111010
P3= 0xfe; //11111101
time= (67-num);
display();
}
}
}
void int_1()interrupt 3
{
unsigned char n;
TH1= 0x3c;
TL1= 0xb0;
TR1= 1;
n++;
if(n==20)
{
num++ ;
n= 0;
if(num== 68)
num= 0;
}
}
void display()
{
unsigned int i;
unsigned int LedOut[10];
LedOut[0]=Disp_Tab[time%10000/1000];
LedOut[1]=Disp_Tab[time%1000/100];
LedOut[2]=Disp_Tab[time%100/10];
LedOut[3]=Disp_Tab[time%10];
LedOut[4]=Disp_Tab[time%10000/1000];
LedOut[5]=Disp_Tab[time%1000/100];
LedOut[6]=Disp_Tab[time%100/10];
LedOut[7]=Disp_Tab[time%10];
for( i=0; i<9; i++)
{
P0 = LedOut;
P1 = dispbit;
delay(150);
}
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
main()
{
TMOD= 0X10;
EA= 1;
ET1= 1;
TH1= 0x3c;
TL1= 0xb0;
TR1= 1;
num= 0;
while(1)
{
if(num<31)
{
P2= 0xcd; //11001101
P3= 0xfe; //11111110
time= (30-num);
display();
}
if(num>30&&num<34)
{
P2= 0xd6; //11010110
P3= 0xfe; //11111110
time= (34-num);
display();
}
if(num>33&&num<65)
{
P2= 0x7a; //01111010
P3= 0xfd; //11111101
time= (64-num);
display();
}
if(num>64&&num<68)
{
P2= 0xba; //10111010
P3= 0xfe; //11111101
time= (67-num);
display();
}
}
}
void int_1()interrupt 3
{
unsigned char n;
TH1= 0x3c;
TL1= 0xb0;
TR1= 1;
n++;
if(n==20)
{
num++ ;
n= 0;
if(num== 68)
num= 0;
}
}
void display()
{
unsigned int i;
unsigned int LedOut[10];
LedOut[0]=Disp_Tab[time%10000/1000];
LedOut[1]=Disp_Tab[time%1000/100];
LedOut[2]=Disp_Tab[time%100/10];
LedOut[3]=Disp_Tab[time%10];
LedOut[4]=Disp_Tab[time%10000/1000];
LedOut[5]=Disp_Tab[time%1000/100];
LedOut[6]=Disp_Tab[time%100/10];
LedOut[7]=Disp_Tab[time%10];
for( i=0; i<9; i++)
{
P0 = LedOut;
P1 = dispbit;
delay(150);
}
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
万水千山总是情,打个酱油行不行.我给你的不是海誓山盟,
而是一颗不变的心!小编可以参考一下。
http://www.taiheth.com
http://www.dgkjly.com
http://www.jinluodz.com
http://www.konuaer.com
http://www.kangbidz.com