#include <at89x51.h>
#include "DS1302.h"
#include"header.h"
void main()
{
uint i,flag,j,k,arm;
EA=1;
ET0=1;
TH0=(65535-50000)/255;
TL0=(65535-50000)%255;
while(1)
{
if(key==0)
{
flag++;
if(flag==3)
flag=0;
while(key==0);
}
DS1302_GetTime(&time1);
//***************显示当前时间**********************************************//
if(flag==0)
{
buf[7]=(time1.Second)%10;
buf[6]=(time1.Second)/10;
buf[4]=(time1.Minute)%10;
buf[3]=(time1.Minute)/10;
buf[1]=(time1.Hour)%10;
buf[0]=(time1.Hour)/10;
for(i=0;i<8;i++)
{
P2=wei[i];
if(i==2||i==5) P0=0xbf;
else P0=display[buf[i]];
delay(10);
}
if(buf[0]==dingshi[0]&&buf[1]==dingshi[1]&&buf[3]==dingshi[3]&&
buf[4]==dingshi[4]&&buf[6]==dingshi[6]&&buf[7]==dingshi[7]&&arm==0) ///定时时间到
{
TR0=1;
}
}
//***************显示当前日期**********************************************//
else if(flag==1)
{
bufdata[7]=(time1.Day)%10;
bufdata[6]=(time1.Day)/10;
bufdata[4]=(time1.Month)%10;
bufdata[3]=(time1.Month)/10;
bufdata[1]=(time1.Year)%10;
bufdata[0]=(time1.Year)/10%10;
for(i=0;i<8;i++)
{
P2=wei[i];
if(i==2||i==5) P0=0xbf;
else P0=display[bufdata[i]];
delay(10);
}
}
else if(flag==2)
{
if(j==0)
{
for(i=0;i<8;i++)
{
buf[i]=0;
}
}
tiaoshi();
j=1;
for(i=0;i<8;i++)
{
P2=wei[i];
if(i==2||i==5) P0=0xbf;
else P0=display[dingshi[i]];
delay(10);
}
}
//***************闹钟**********************************************//
if(offon==0)
{
k++;
if(k==2)
k=0;
while(offon==0);
}
if(k==0) ///开闹钟
{
green=0;
red=1;
arm=0;
}
else if(k==1) ///关闹钟
{
green=1;
red=0;
TR0=0;
arm=1;
}
}
}
//******************调定时时间**************************//
void tiaoshi(void)
{
//*********************调秒*******************//
if(jiamiao==0)
{
dingshi[7]++;
if(dingshi[7]==10)
{
dingshi[7]=0;
dingshi[6]++;
if(dingshi[6]==6)
dingshi[6]=0;
}
while(jiamiao==0);
}
if(jianmiao==0)
{
if(dingshi[7]==0&&dingshi[6]==0)
{
dingshi[7]=9;
dingshi[6]=5;
}
else if(dingshi[7]==0)
{
dingshi[7]=9;
dingshi[6]--;
}
else
dingshi[7]--;
while(jianmiao==0);
}
//*********************调分*******************//
if(jiafen==0)
{
dingshi[4]++;
if(dingshi[4]==10)
{
dingshi[4]=0;
dingshi[3]++;
if(dingshi[3]==6)
dingshi[3]=0;
}
while(jiafen==0);
}
if(jianfen==0)
{
if(dingshi[4]==0&&dingshi[3]==0)
{
dingshi[4]=9;
dingshi[3]=5;
}
else if(dingshi[4]==0)
{
dingshi[4]=9;
dingshi[3]--;
}
else
dingshi[4]--;
while(jianfen==0);
}
//*********************调时*******************//
if(jiashi==0)
{
dingshi[1]++;
if(dingshi[1]==10)
{
dingshi[1]=0;
dingshi[0]++;
}
if((dingshi[0]*10+dingshi[1])==24)
{
dingshi[0]=0;
dingshi[1]=0;
}
while(jiashi==0);
}
if(jianshi==0)
{
if(dingshi[1]==0&&dingshi[0]==0)
{
dingshi[1]=3;
dingshi[0]=2;
}
else if(dingshi[1]==0)
{
dingshi[1]=9;
dingshi[0]--;
}
else
dingshi[1]--;
while(jianshi==0);
}
}
//********************喇叭响********************/
void timer() interrupt 1
{
uint tt;
TH0=(65535-50000)/255;
TL0=(65535-50000)%255;
tt++;
sound=!sound;
if(tt==2000)
{
TR0=0;
tt=0;
}
}