#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
char miao,fen,shi;
bit flag,flag_time;
char set_miao=12,set_fen=12,set_shi=12;
uchar s1num;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit s4=P3^3;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit BUZZ=P1^4;
sbit wei0=P2^0;
sbit wei1=P2^1;
sbit wei2=P2^2;
sbit wei3=P2^3;
sbit wei4=P2^4;
sbit wei5=P2^5;
sbit wei6=P2^6;
sbit wei7=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,
0x5e,0x79,0x71,0x40};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TL1=(65536-5000)/256;
TL1=(65536-5000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
}
void display(char miao,char fen, char shi)
{
P0=table[miao%10];
wei7=0;
delay(1);
wei7=1;
P0=0xff;
P0=table[miao/10];
wei6=0;
delay(1);
wei6=1;
P0=0xff;
P0=table[16];
wei5=0;
delay(1);
wei5=1;
P0=0xff;
P0=table[fen%10];
wei4=0;
delay(1);
wei4=1;
P0=0xff;
P0=table[fen/10];
wei3=0;
delay(1);
wei3=1;
P0=0xff;
P0=table[16];
wei2=0;
delay(1);
wei2=1;
P0=0xff;
P0=table[shi%10];
wei1=0;
delay(1);
wei1=1;
P0=0xff;
P0=table[shi/10];
wei0=0;
delay(1);
wei0=1;
P0=0xff;
}
void keyscan()
{
if(s1==0)
{
delay(5);
if(s1==0)
{
while(!s1);
s1num++;
if(s1num==1)
{
if(flag)
TR0=1;
else
TR0=0;
led1=0;
}
if(s1num==2)
{
led2=0;
led1=1;
}
if(s1num==3)
{
led3=0;
led1=1;
led2=1;
}
if(s1num==4)
{
led1=1;
led2=1;
led3=1;
s1num=0;
TR0=1;
}
} } }
void time()
{
if(s1num!=0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
switch(s1num)
{
case 1:
miao++;
if(miao==60)
miao=0;
break;
case 2:
fen++;
if(fen==60)
fen=0;
break;
case 3:
shi++;
if(shi==24)
shi=0;
break;
}}}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
switch(s1num)
{
case 1:
miao--;
if(miao<0)
miao=59;
break;
case 2:
fen--;
if(fen<0)
fen=59;
break;
case 3:
shi--;
if(shi<0)
shi=23;
break;
}}}}}
void set_time()
{
if(s1num==0)
{
if(s4==0)
{
delay(5);
if(s4==0)
{
while(!s4);
led4=~led4;
flag=~flag;
}}}
if(flag)
{
if(s1num!=0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
switch(s1num)
{
case 1:
set_miao++;
if(set_miao==60)
set_miao=0;
break;
case 2:
set_fen++;
if(set_fen==60)
set_fen=0;
break;
case 3:
set_shi++;
if(set_shi==24)
set_shi=0;
break;
}}}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
switch(s1num)
{
case 1:
set_miao--;
if(set_miao<0)
set_miao=59;
break;
case 2:
set_fen--;
if(set_fen<0)
set_miao=59;
break;
case 3:
set_shi--;
if(set_shi<0)
set_miao=23;
break;
}}}}} }
void main()
{
start();
while(1)
{
keyscan();
time();
if(!flag)
{
display(miao,fen,shi);
}
else
{
display(set_miao,set_fen,set_shi);
}
if(miao==set_miao&&fen==set_fen&&shi==set_shi)
{
TR1=1;
}
if(flag_time)
{
TR1=0;
BUZZ=1;
flag_time=0;
}
set_time();
}}
void time_0()interrupt 1
{
uchar aa;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
miao++;
if(miao>=60)
{
miao=0;
fen++;
if(fen>=60)
{
fen=0;
shi++;
if(shi>=24)
{
shi=0;
}}}}}
void time_1()interrupt 3
{
uchar bz_time;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
bz_time++;
if(bz_time==200)
{
bz_time=0;
flag_time=1;
}
BUZZ=~BUZZ;
}
{BN}`T6ZOK1S`2JOVMZLG)3.png (99.8 KB, 下載次數(shù): 113)
下載附件
2015-12-3 14:25 上傳
|