#include<reg52.h>
char code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
char code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
char nam_bit[5]={0,0,0,0,0};
unsigned int i,j,a,flag;
//数字分离函数
void separate(unsigned int i)
{
nam_bit[2]=i%16;
nam_bit[1]=i/16%16;
nam_bit[0]=i/256%16;
}
//设置几位数码管亮
void bit1(unsigned int i)
{
if(i>=10000)
j=5;
else if(i>=1000)
j=4;
else if(i>=100)
j=3;
else if(i>=10)
j=2;
else j=1;
}
void delay(int b)
{ int c;
for(b;b>0;b--)
for(c=150;c>0;c--);
}
int main()
{
TMOD=0x20;
TH1=0xf3;
TL1=0xf3;
TR1=1;
SCON=0x50;
EA=1;
ES=1;
while(1)
{
separate(i);
bit1(i);
for(a=0;a<3;a++)
{
P0=table1[nam_bit[a]];
P1=table2[a];
delay(4);
}
}
}
void ser() interrupt 4
{
RI=0;
i=SBUF;
}