第1个回答 2013-07-02
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code duan[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40
};
uchar code wei[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
uchar daima[8];
uchar cnt,s,m,h,t;
bit f_a;
uchar j,v;
uchar song;
void delay(uchar x)
{
uchar y,z;
for(y=x;y>0;y--)
for(z=121;z>0;z--);
}
void init()
{
TMOD=0x01;
TH0=-50000/256;
TL0=-50000%256;
TR0=1;
ET0=EA=1;
}
void xianshi()
{
uchar i;
for(i=0;i<8;i++)
{
if(((i==j)&&(f_a))|((i==(j+1))&&(f_a)))
{
P0=duan[daima[i]];
P1=wei[i];
delay(10);
P1=0xff;
}
if((i!=j)&&(i!=(j+1)))
{
P0=duan[daima[i]];
P1=wei[i];
delay(10);
P1=0xff;
}
}
}
void key()
{
P2=0xff;
if((P2!=0xff)&&(song==0))
{
delay(10);
if((P2==0xfe)&&(song==0))
{
song=1;
j=j+3;
if(j>=10)j=0;
}
if((P2==0xfd)&&(song==0))
{ song=1;
t++;
if(j==0)
{
h=t;
//if(h==24)h=0;
}
if(j==3)
{
m=t;
//if(m==60)m=0;
}
if(j==6)
{
s=t;
//if(s==60)s=0;
}
}
}
else if(P2==0xff)song=0;
}
void main()
{
delay(200);
j=9;
init();
while(1)
{
key();
xianshi();
}
}
void tt0() interrupt 1
{
TH0=-50000/256;
TL0=-50000%256;
cnt++;
if((cnt%10)==0)f_a=!f_a;
if(cnt==20)cnt=0,s++;
if(s==60)s=0,m++;
if(m==60)m=0,h++;
if(h==24)h=0;
daima[0]=h/10;
daima[1]=h%10;
daima[2]=10;
daima[3]=m/10;
daima[4]=m%10;
daima[5]=10;
daima[6]=s/10;
daima[7]=s%10;
}