#include "reg52.h"
#include
sbit PA = P2^0;
sbit PB = P2^1;
sbit PC = P2^2;
sbit Button0 = P3^3;
sbit Button1 = P2^3;
sbit Button2 = P2^4;
sbit Button3 = P2^5;
sbit Button4 = P2^6;
char digital[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
bit flag = 0;
char count = 0;
char count_adjust=-1;
char num[4]={0};
char clk[8]={0};
int a = -4760;
void delay(long int i){
while(i){
i--;
}
}
void Display(char i,char num){
switch(i) {
case(0):PA=1;PB=1;PC=1;break;
case(1):PA=0;PB=1;PC=1;break;
case(2):PA=1;PB=0;PC=1;break;
case(3):PA=0;PB=0;PC=1;break;
case(4):PA=1;PB=1;PC=0;break;
case(5):PA=0;PB=1;PC=0;break;
case(6):PA=1;PB=0;PC=0;break;
case(7):PA=0;PB=0;PC=0;break;
}
P0 = digital[num];
delay(100);
P0 = 0x00;
}
void dis_clock(char i0,char i1,char i2,char i3,char i4,char i5,char i6,char i7){
Display(0,i0);
Display(1,i1);
Display(2,i2);
Display(3,i3);
Display(4,i4);
Display(5,i5);
Display(6,i6);
Display(7,i7);
}
void clock(void) interrupt 3
{
TL1 = a%256;
TH1 = a/256;
count++;
if(count==2){
flag = 1;
count = 0;
num[0]++;
if(num[0]==100){
num[0]=0;
num[1]++;
if(num[1]==60){
num[1]=0;
num[2]++;
if(num[2]==60){
num[2]=0;
num[3]++;
if(num[3]==24){
num[3]=0;
}
}
}
}
clk[0] = num[0]%10;
clk[1] = num[0]/10;
clk[2] = num[1]%10;
clk[3] = num[1]/10;
clk[4] = num[2]%10;
clk[5] = num[2]/10;
clk[6] = num[3]%10;
clk[7] = num[3]/10;
}
}
void adjust(void) interrupt 2
{
char i = 30;
bit flag_ad = 1;
while(flag_ad){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
if(!Button0){
count_adjust = (count_adjust+1)%3;
while(i--){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
i = 30;
}
if(!Button1){
flag_ad = 0;
while(i--){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
i =30;
}
if(count_adjust!=-1){
if(!Button2){
switch(count_adjust){
case 0:
if(clk[2]!=9) {clk[2]++; num[1]++;}
else if(clk[3]!=5){ clk[2]=0;clk[3]++;num[1]++;}
else {clk[2]=0;clk[3]=0;num[1]=0;}
break;
case 1:
if(clk[4]!=9) {clk[4]++; num[2]++;}
else if(clk[5]!=5){ clk[4]=0;clk[5]++;num[2]++;}
else {clk[4]=0;clk[5]=0;num[2]=0;}
break;
case 2:
if(clk[6]!=3){ clk[6]++;num[3]++; }
else if(clk[7]!=2){ clk[6]=0;clk[7]++;num[3]++;}
else {clk[6]=0;clk[7]=0;num[3]=0;}
break;
}
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
while(i--){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
i = 30;
}
if(!Button3){
switch(count_adjust){
case 0:
if(clk[2]!=0) {clk[2]--;num[1]--;}
else if(clk[3]!=0){ clk[2]=9;clk[3]--;num[1]--;}
else {clk[2]=9;clk[3]=5;num[1]=59;}
break;
case 1:
if(clk[4]!=0) {clk[4]--;num[2]--;}
else if(clk[5]!=0){ clk[4]=9;clk[5]--;num[2]--;}
else {clk[4]=9;clk[5]=5;num[2]=59;}
break;
case 2:
if(clk[6]!=0){ clk[6]--; num[3]--;}
else if(clk[7]!=0){ clk[6]=9;clk[7]--;num[3]--;}
else {clk[6]=2;clk[7]=3;num[3]=23;}
break;
}
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
while(i--){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
i = 30;
}
}
if(!Button4){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
flag_ad = 0; count_adjust = -1;
while(i--){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
i = 30;
}
}
}
void main(){
PX1 = 1;
EX1 = 1;
TR1 = 1;
EA = 1;
ET1 = 1;
TMOD = 0x10;
TL1 = a%256;
TH1 = a/256;
while(1){
dis_clock(clk[0],clk[1],clk[2],clk[3],clk[4],clk[5],clk[6],clk[7]);
}
}