}
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;