~~~
#include<reg51.h>
sbit Key0=P2^0;//?控制開關
sbit Key1=P2^1;? //控制調節的變量
sbit Key2=P2^2;//?增加
sbit Key3=P2^3;? //?減少
unsigned char code Dx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
? ? ? ? ? ? ? ? ? ? ? ? ?0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
?unsigned char code Wx[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
?unsigned ?char playdata[8]={0};
? ?char min=0;
?char ms=0;
? ?char h=0;?
?void main()
?{
? unsigned int i;
unsigned ?char xuanzhe=0;
unsigned char j;
? ? EA=1;
? ? TMOD=0x10;
TH1=0xB8;
TL1=0x00;
ET1=1;
TR1=1;
while(1)
{
? ? ? if(!Key0)
?{
? ? for(i=1000;i>0;i--);
if(!Key0)
{
? ? ?EA=~EA;
?while(!Key0);
?}
?}
?if(!Key1)
?{
? ? for(i=1000;i>0;i--);
if(!Key1)
{
? ? ?xuanzhe++;
?while(!Key1);
?}
?if(xuanzhe>3)
?xuanzhe=0;
?}
?if(!Key2)
?{
? ? for(i=1000;i>0;i--);
if(!Key2)
{
? ? ?switch(xuanzhe)
?{
? ? case 1:
{
ms++;
if(ms>=60)
{
? ? ms=0;
min++;
if(min>=60)
{
? ?min=0;
h++;
if(h>=24)
h=0;
}
}
break;
}
?case 2:
?{
?min++;
?if(min>=60)
?{
? ? min=0;h++;
if(h>=24)
h=0;
?}
?break;
?}
? case 3:
? {
? h++;
? if(h>=24)
? ?h=0;
? break;
? }
?}
?while(!Key2);
?}
?}
?if(!Key3)
?{
? ? for(i=1000;i>0;i--);
if(!Key3)
{
? ? ?switch(xuanzhe)
?{
? ? case 1:
{
?ms--;
if(ms<=0)
{
ms=59;
min--;
if(min<=0)
{
??
? min=59;
? h--;
? if(h<=0)
? {
? ?h=23;
}
}
}
break;
}
?case 2:
?{
? min--;
?if(min<0)
?{
? ?h--;
if(h<0)
h=23;
?}
?break;
?}
? case 3:
? {
? h--;
? if(h<0)
? h=23;
? break;
? }
?}
?while(!Key3);
}
}
?playdata[0]=Dx[h/10];
playdata[1]=Dx[h%10];
playdata[2]=0x80;
playdata[3]=Dx[min/10];
playdata[4]=Dx[min%10];
playdata[5]=0x80;
playdata[6]=Dx[ms/10];
playdata[7]=Dx[ms%10];
for(i=0;i<8;i++)
{
? ? ?P0=0x00;
? ? P0=playdata[i];
? ? ? ? ? ? ?P1=Wx[i];
j=200;
while(j--);
?
}
}
?}
?void Timer1() ? interrupt 3
?{
? ? static ?unsigned char cnt=0;
? ? TH1=0xB8;
TL1=0x00;
cnt++;
if(cnt>=50)
{
? cnt=0;
? ms++;
? if(ms>=60)
? {
? ? ?ms=0;
?min++;
?if(min>=60)
?{
? ? min=0;
h++;
if(h>=24)
h=0;
?}
? }
}
?}
~~~
?