給妳個程序參考下
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit suo1=P2^6;
sbit suo2=P2^7;
sbit led1=P1^0;
sbit led2=P1^1;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
void delayms(uint);
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void deplayms(uint);
void display(uchar,uchar,uchar,uchar,uchar,uchar);
uchar ge;
uchar num,num1,num2,shi;
uchar num3,num4;
uchar fen1,fen2;shi1,shi2;
void keyscant()
{
if(key1==0)
{
delayms(10);
if(key1==0)
{
num++;
if(num==60)
num=0;
while(!key1);
}
}
if(key2==0)
{
delayms(10);
if(key2==0)
{
num3++;
if(num3==60)
num3=0;
}
while(!key2);
}
if(key3==0)
{
delayms(10);
if(key3==0)
{num4++;
if(num4==24)
num4=0;
}
while(!key3);
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
while(!key4);
TR1=~TR1;
} }
}
void main()
{if(key1==0)
TMOD=0x11;
//TMOD=0x10;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
// TH1=(65536-45872)/256;
// TL1=(65536-45872)%256;
EA=1;
ET0=1;
// ET1=1;
TR0=1;
// TR1=1;
num=38;
num4=16;
num3=30;
while(1)
{ keyscant();
//if ((num2 %10)==0) led1=~led1;
shi=num/10;
ge=num%10;
fen1=num3/10;
fen2=num3%10;
shi1=num4/10;
shi2=num4%10;
display(shi,ge,fen1,fen2,shi1,shi2);
}
}
void display(uchar shi,uchar ge,uchar fen1,uchar fen2,uchar shi1,uchar shi2)
{
P0=0xdf;
suo2=1;
suo2=0;
suo1=1;
P0=table[ge];
suo1=0;
deplayms(3);
P0=0xef;
suo2=1;
suo2=0;
suo1=1;
P0=table[shi];
suo1=0;
P0=0xff;
deplayms(3);
P0=0xf7;
suo2=1;
suo2=0;
suo1=1;
P0=table[fen2]+0x80;
suo1=0;
P0=0xff;
deplayms(3);
P0=0xfb;
suo2=1;
suo2=0;
suo1=1;
P0=table[fen1];
suo1=0;
P0=0xff;
deplayms(3);
P0=0xfd;
suo2=1;
suo2=0;
suo1=1;
P0=table[shi2]+0x80;
suo1=0;
P0=0xff;
deplayms(3);
P0=0xfe;
suo2=1;
suo2=0;
suo1=1;
P0=table[shi1];
suo1=0;
P0=0xff;
deplayms(3);
}
void deplayms(uint xm)
{
uint i,j;
for(i=xm;i>0;i--)
for(j=110;j>0;j--);
}
void delayms(uint xm)
{
uint i,j;
for(i=xm;i>0;i--)
for(j=110;j>0;j--);
}
void To_time() interrupt 1
{
//TH0=(65536-45872)/256;
//TL0=(65536-45872)%256;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num1++;
if(num1==10)
led1=~led1;
if(num1==20)
{
led1=~led1;
num1=0;
num++;
if(num==60)
{
num=0;
num3++;
if(num3==60)
{
num3=0;
num4++;
if(num4==24)
num4=0;
}
}
}
}
/*
void T1_time() interrupt 3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num2++;
} */