#include <reg52.h>
#include <delay.h>
int mypow(int x, int y);
void num_check(void);
code unsigned int segment_data[11]={ 0x3f,0x06,0x5b,0x4F,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40};
code unsigned int ROW[8]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
unsigned int num[8];
unsigned char i,a=0,j;
void main()
{
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
num[2]=10;num[5]=10;
while(1)
{
if(a>=20) num_check();
for(j=0;j<=7;j++)
{
P2=~ROW[j];
P0=0;
P0=segment_data[num[j]];
delay(1);
}
}
}
void num_check(void)
{
if(a>=20){a=0;num[0]++;};
if(num[0]>=10){num[0]=0;num[1]++;};
if(num[1]>=6){num[1]=0;num[3]++;};
if(num[3]>=10){num[3]=0;num[4]++;};
if(num[4]>=6){num[4]=0;num[6]++;};
if(num[6]>=10){num[6]=0;num[7]++;};
if(num[7]>=3){num[7]=0;};
if((num[7]==2)&&(num[6]==4)){num[6]=0;num[7]=0;};
}
void TIME1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
}
|