|
#include
#define uchar unsigned char
#define uint unsigned int
void led_display(void);
void delay(uint tc);
void init_at89c52(void);
void time_count(void);
sbit number0=P1^0;
sbit number1=P1^1;
sbit number2=P1^2;
uint count;
uchar time;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,};
void main(void)
{
init_at89c52();
time_count();
while(1)
{
led_display();
}
}
void init_at89c52()
{
TMOD=0x10; //定时器T0,允许使用,定时方式,模式1
TH0=0;TL0=0; //计数器初值为0
TR0=0;
//P3_2=0;
}
void led_display(void)
{
uchar time;
//count=12300;
time=count/100;
number2=0; number1=1; number0=1;
P0=table[time/100];
delay(5);
number2=1; number1=0; number0=1;
P0=table[(time-100*(time/100))/10]|0x80;
delay(5);
number2=1; number1=1; number0=0;
P0=table[time%10];
delay(5);
number2=1; number1=1; number0=1;
}
void time_count()
{
uint overflow_count;
while(P3_2)
{
TR0=1; //开计数器
if(TF0==1)
{
overflow_count++;
count=65536*overflow_count+TH0<<8+TL0;
}
else
count=TH0*4096+TL0;
}
}
void delay(uint tc) //延时程序
{
while( tc != 0 )
{
unsigned int i;
for(i=0; i<100; i++);
tc--;
}
}
|
|