#include <reg51.h>
#define uchar unsigned char
uchar tab[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //字型码表
uchar number=0,counter=0,number_1=0,number_0=0;
void display(void);  //显示函数声明
void delay(void);   //延时函数声明
main( )
{
   TMOD=0x01;  //定时器0工作在方式1
   TL0=0xB0;    //定时器0赋初值
   TH0=0x3C;
   EA=1;       //打开总开关
   ET0=1;      //打开分开关
   TR0=1;      //启动定时器0
   while(1)
   {
     display( );  //调用显示子程序
   }
}
/*显示子程序*/
void display(void)
{  
  P2=tab[number_1]; //P2口送十位显示数字
  P3=0x01;        //十位显示
  delay( );
  P3=0x00;
  P2=tab[number_0]; //P2口送个位显示数字
  P3=0x02;        //个位显示
  delay();
  P3=0x00;
}
/*定时器0中断服务程序*/
void timer0() interrupt 1 //定时器0中断号为1
{
  ET0=0;
  TL0=0xB0;        //定时器0重新赋初值
  TH0=0x3C;
  counter++;
  if(counter==20)    //定时到1秒没有
  {
    counter=0;
    number++;
    if(number==60)  //计数值有没有到60
    {
     number=0;
    }
    number_1=number/10; // number_1放秒计数器的十位
    number_0=number%10; // number_0放秒计数器的个位
  }
  ET0=1;
}
void delay(void)   // 延时子程序
{
  uchar data i;
  for(i=500;i>0;i--);
}
