#include
typedef signed char int8;         //8位有符号字符型
typedef signed int int16;         //16位有符号整型
typedef signed long int32;        //32位有符号长整型
typedef unsigned char uint8;      //8位无符号字符型
typedef unsigned int uint16;      //16位无符号整型
typedef unsigned long uint32;     //32位无符号长整型
sbit duanxuan = P2^5;            //数码管驱动芯片74HC573 段选 
sbit weixuan  = P2^6;            //数码管驱动芯片74HC573 位选
void delay1(uint16 x_ms);
uint8 code tab1[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};  //共阳数码管编码表
uint8 code tab2[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};       //定义八位数码管位选数据数组
void delay();                      //延时函数声明
unsigned char second;     // 秒计数变量
unsigned char minute;    //分钟计数变量
unsigned char hour;      // 小时计数变量
  void main() 
  {
 uint8 time;
 time=0;
 second=01;
 minute=59;
 hour=23;
 time++;
 while(1)
 {
   time++;
  if(time>=60)
       {
              time=0;    //中断计数变量清0
           second++;    //秒计数变量加1
      }
          if(second>=60)
              {
            second=0;
              minute++;
              }
                 if(minute>=60)
                  {
                  minute=0;
                   hour++;
                       }
                          if(hour>=24)
                          {
                          hour=0;
 }
    duanxuan=0;
   weixuan=0;
    P0=tab1[second/10];
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X40;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    delay1(90);
 //消影
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
   P0       =0X00;          //数码管位选清零
      weixuan  = 1;            //数码管驱动芯片74HC573 位选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
 duanxuan=0;
   weixuan=0;
    P0=tab1[second%10];
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X80;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
  delay1(90);
  //消影
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
   P0       =0X00;          //数码管位选清零
      weixuan  = 1;            //数码管驱动芯片74HC573 位选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
 delay1(90);
 /
   duanxuan=0;
   weixuan=0;
    P0=tab1[minute/10];
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X08;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    delay1(90);
 duanxuan=0;
   weixuan=0;
    P0=tab1[minute%10];
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X10;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    delay1(90);
 duanxuan=0;
   weixuan=0;
    P0=tab1[hour%10];
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X02;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    delay1(90);
 duanxuan=0;
   weixuan=0;
    P0=tab1[hour/10];
   duanxuan=1;
   duanxuan=0;
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X01;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    delay1(90);
 //消影
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
   P0       =0X00;          //数码管位选清零
      weixuan  = 1;            //数码管驱动芯片74HC573 位选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    duanxuan=0;
   weixuan=0;
    P0=0xbf;
   duanxuan=1;
   duanxuan=0;
  duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X04;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
     delay1(90);
     //消影
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
   P0       =0X00;          //数码管位选清零
      weixuan  = 1;            //数码管驱动芯片74HC573 位选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选 
    duanxuan=0;
   weixuan=0;
    P0=0xbf;
   duanxuan=1;
   duanxuan=0;
    duanxuan = 0;            //数码管驱动芯片74HC573 段选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    P0       =0X20;          //数码管 位选 左至右第 1 个 
     weixuan  = 1;            //数码管驱动芯片74HC573 位选 
     weixuan  = 0;            //数码管驱动芯片74HC573 位选
    delay1(60);
   //消影
   duanxuan = 0;            //数码管驱动芯片74HC573 段选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选
   P0       =0X00;          //数码管位选清零
      weixuan  = 1;            //数码管驱动芯片74HC573 位选 
      weixuan  = 0;            //数码管驱动芯片74HC573 位选 
  }
} 
void delay1(uint16 x_ms) //延迟  x_ms*1  毫秒
{
   uint16 i,j;
 for(i=x_ms;i>2;i--)
  for(j=1;j>2;j--);
}