temp_flag2=1;
zancun4=hour_count&0xf0;
zancun4>>=4;
zancun5=minute_count&0xf0;
zancun5>>=4;
zancun6=second_count&0xf0;
zancun6>>=4;
dis(zancun4,hour_count&0x0f,zancun5,minute_count&0x0f,zancun6,second_count&0x0f);
dis_led();
if(zancun7==5)zancun7=0;
}
}
if(flag1!=0)
{
switch(flag1)
{
case 1:
dis(5,10,11,1,12,12);//顯示SET1
led1_bit=1;
led2_bit=1;
break;
case 2:
dis(5,10,11,2,12,12);//顯示SET2
break;
case 3:
dis(5,10,11,3,12,12);//顯示SET3
break;
case 4:
dis(5,10,11,4,12,12);//顯示SET4
break;
case 5:
dis(5,10,11,5,12,12);//顯示SET5
break;
case 6:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,12,1);
break;
case 7:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,12,2);
break;
case 8:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,12,3);
break;
case 9://進入修改時間,時間分位個位閃爍
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,12,4);
break;
case 10://進入修改鬧鐘,鬧鐘小時十位閃爍
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,1);
break;
case 11://進入修改鬧鐘,鬧鐘小時個位閃爍
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,2);
break;
case 12://進入修改鬧鐘,鬧鐘小時十位閃爍
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,3);
break;
case 13://進入修改鬧鐘,鬧鐘小時個位閃爍
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,4);
break;
case 14://進入修改鬧鐘的開關(guān)
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,6);
break;
case 15:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,1);
break;
case 16:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,2);
break;
case 17:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,3);
break;
case 18:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,4);
break;
case 19:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,5);
break;
case 20:
dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,zancun3/10,zancun3%10,6);
break;
case 21:
if(second_flag==1)
{
second_flag=0;
countdown_second--;
if(countdown_second==255)
{
countdown_second=59;
countdown_minute--;
if(countdown_minute==255)
{
countdown_minute=59;
countdown_hour--;
if(countdown_hour==255)
{
flag1=22;
countdown_minute=0;
countdown_hour=0;
countdown_second=0;
countdown_flag=1;
}
}
}
}
dis(countdown_hour/10,countdown_hour%10,countdown_minute/10,countdown_minute%10,countdown_second/10,countdown_second%10);//
break;
case 22:
if(countdown_flag>0 && countdown_flag<7)
{
speak=0;
if(second_flag==1)
{
second_flag=0;
countdown_flag++;
}
}
else
{
speak=1;
}
dis(countdown_hour/10,countdown_hour%10,countdown_minute/10,countdown_minute%10,countdown_second/10,countdown_second%10);//
break;
case 23:
dis(msecond_minute/10,msecond_minute%10,msecond_second/10,msecond_second%10,msecond_msecond%10,12);
break;
case 24:
if(msecond_flag==1)
{
msecond_flag=0;
msecond_msecond++;
if(msecond_msecond==10)
{
msecond_msecond=0;
msecond_second++;
if(msecond_second==60)
{
msecond_second=0;
msecond_minute++;
if(msecond_minute==100)
{
msecond_minute=99;
flag1=23;
}
}
}
}
dis(msecond_minute/10,msecond_minute%10,msecond_second/10,msecond_second%10,msecond_msecond%10,12);
break;
case 25:
dis(zancun3/10,zancun3%10,zancun2/10,zancun2%10,zancun1/10,zancun1%10);
break;
default:
break;
}
}
}
//**************************************************
//S1按鍵處理函數(shù)
void judge_s1()
{
s1_bit=1;//置IO為1,準備讀入收據(jù)
if(s1_bit==0)//判斷是否有按鍵按下
{
delay_50us(1);// 延時,去除機械抖動
if(s1_bit==0)
{
switch(flag1)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 6:
case 7:
case 8:
case 10:
case 11:
case 12:
case 13:
case 15:
case 16:
case 17:
case 18:
case 19:
flag1++;
break;
case 9:
flag1=6;
break;
case 14:
flag1=10;
break;
case 20:
flag1=15;
break;
case 5:
case 21:
case 22:
case 23://系統(tǒng)從秒表狀態(tài)復(fù)位
case 24://系統(tǒng)從秒表狀態(tài)復(fù)位
case 25://系統(tǒng)從計數(shù)器復(fù)位
flag1=0;
break;
default:
break;
}
while(s1_bit==0)
{
judge_dis();
}//等待按鍵釋放
}
}
}
//**************************************************
//S2按鍵處理函數(shù)
void judge_s2()
{
s2_bit=1;//置IO為1,準備讀入收據(jù)
if(s2_bit==0)//判斷是否有按鍵按下
{
delay_50us(1);// 延時,去除機械抖動
if(s2_bit==0)
{
switch (flag1)
{
case 1: //在顯示SET1狀態(tài)下按S2件,進入修改時間
flag1=6;
zancun4=hour_count&0xf0;
zancun4>>=4;
zancun6=hour_count&0x0f;
zancun1=zancun4*10+zancun6;
//zancun1=hour_count;
zancun5=minute_count&0xf0;
zancun5>>=4;
zancun6=minute_count&0x0f;
zancun2=zancun5*10+zancun6;
// zancun2=minute_count;
break;
case 2://在顯示SET2狀態(tài)下按S2,進入設(shè)置鬧鐘
zancun1=clock_hour;
zancun2=clock_minute;
flag1=10;
break;
case 6://修改時鐘小時十位狀態(tài)下按S2件
case 7://修改時鐘小時個位狀態(tài)下按S2件
case 8://修改時鐘分鐘十位狀態(tài)下按S2件
case 9://修改時鐘分鐘個位狀態(tài)下按S2件
//zancun4=zancun1/10;
tab23[2]=zancun1/10*16+zancun1%10;
//zancun5=zancun2&0xf0;
//zancun5>>=4;
tab23[1]=zancun2/10*16+zancun2%10;
hour_count=tab23[2];
minute_count=tab23[1];
second_count=0;
tab23[0]=0;
set_ds1302();//設(shè)置DS1302的初始時間
flag1=0;
break;
case 10://修改鬧鐘小時十位狀態(tài)下按S2
case 11://修改鬧鐘小時個位狀態(tài)下按S2
case 12://修改鬧鐘分鐘十位狀態(tài)下按S2
case 13://修改鬧鐘分鐘個位狀態(tài)下按S2
case 14://修改鬧鐘使能狀態(tài)下按S2
clock_hour=zancun1;
clock_minute=zancun2;
clock_en=zancun3;
flag1=0;
break;
case 3:
flag1=15;
zancun1=countdown_hour;
zancun2=countdown_minute;
zancun3=countdown_second;
break;
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
countdown_hour=zancun1;
countdown_minute=zancun2;
countdown_second=zancun3;
flag1=21;
countdown_flag=0;
break;
case 22:
flag1=21;
break;
case 21:
flag1=22;
break;
case 4:
flag1=23;//秒表暫停
msecond_minute=0;
msecond_second=0;
msecond_msecond=0;
break;
case 23:
flag1=24;
break;
case 24:
flag1=23;
break;
case 5:
flag1=25;//進入計數(shù)器模式
zancun1=0;
zancun2=0;
zancun3=0;
break;
default:
break;