#include
#define SMG_Data P0
#define SMG_bit P2
#define switch_time 1
sbit Led=P1^0 ;
unsigned int T0_counter,counter ;
unsigned char code numtab[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,
0x07,0x7F,0x6F,0x40};
unsigned char code bittab[8]={0xfe,0xfd,
0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char bit_select,second=55,miniute=59,hour=23;
void interrupt_init ()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;ET0=1;EA=1;
}
void timer0()interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
T0_counter++; counter++;
if(T0_counter>=switch_time)
{
T0_counter=0; bit_select++;
if(bit_select>=8) bit_select=0;
}
}
void main (void)
{
interrupt_init ();
while (1)
{
if(counter>=1000){counter=0;second++;}
if(second>59){second=0;miniute++;}
if(miniute>59){miniute=0;hour++;}
if(hour>23){hour=0;}
if (hour==0&&miniute==0&&second==0) Led=0;
else Led=1;
switch (bit_select)
{
case 0:SMG_bit =bittab[7];SMG_Data=numtab[second%10];break;
case 1:SMG_bit =bittab[6];SMG_Data=numtab[second/10];break;
case 2:SMG_bit =bittab[5];SMG_Data=numtab[10];break;
case 3:SMG_bit =bittab[4];SMG_Data=numtab[miniute%10]; break;
case 4:SMG_bit =bittab[3];SMG_Data=numtab[miniute/10]; break;
case 5:SMG_bit =bittab[2];SMG_Data=numtab[10]; break;
case 6:SMG_bit =bittab[1];SMG_Data=numtab[hour%10];break;
case 7:SMG_bit =bittab[0];SMG_Data=numtab[hour/10];break;
default:break;
}
}
}
本文来源:https://www.2haoxitong.net/k/doc/90a5a10cf12d2af90242e65b.html
文档为doc格式