}
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按鍵處理函數
void judge_s1()
{
s1_bit=1;//置IO為1,準備讀入收據
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://系統從秒表狀態復位
case 24://系統從秒表狀態復位
case 25://系統從計數器復位
flag1=0;
break;
default:
break;
}
while(s1_bit==0)
{
judge_dis();
}//等待按鍵釋放
}
}
}
//**************************************************
//S2按鍵處理函數
void judge_s2()
{
s2_bit=1;//置IO為1,準備讀入收據
if(s2_bit==0)//判斷是否有按鍵按下
{
delay_50us(1);// 延時,去除機械抖動
if(s2_bit==0)
{
switch (flag1)
{
case 1: //在顯示SET1狀態下按S2件,進入修改時間
flag1=6;
zancun1=hour_count;
zancun2=minute_count;
break;
case 2://在顯示SET2狀態下按S2,進入設置鬧鐘
zancun1=clock_hour;
zancun2=clock_minute;
flag1=10;
break;
case 6://修改時鐘小時十位狀態下按S2件
case 7://修改時鐘小時個位狀態下按S2件
case 8://修改時鐘分鐘十位狀態下按S2件
case 9://修改時鐘分鐘個位狀態下按S2件
hour_count=zancun1;
minute_count=zancun2;
second_count=0;
flag1=0;
break;
case 10://修改鬧鐘小時十位狀態下按S2
case 11://修改鬧鐘小時個位狀態下按S2
case 12://修改鬧鐘分鐘十位狀態下按S2
case 13://修改鬧鐘分鐘個位狀態下按S2
case 14://修改鬧鐘使能狀態下按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;//進入計數器模式
zancun1=0;
zancun2=0;
zancun3=0;
break;
default:
break;