{
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;
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状态下按S2,进入设置闹钟 zancun1=clock_hour; zancun2=clock_minute; flag1=10; break;
case 6://修改时钟小时十位状态下按S2件 case 7://修改时钟小时个位状态下按S2件 case 8://修改时钟分钟十位状态下按S2件 case 9://修改时钟分钟个位状态下按S2件 //zancun4=zancun1/10;
tab23[2]=zancun1/10*16+zancun1;
//zancun5=zancun2&0xf0;
//zancun5>>=4;
tab23[1]=zancun2/10*16+zancun2; hour_count=tab23[2]; minute_count=tab23[1]; second_count=0; tab23[0]=0;
set_ds1302();//设置DS1302的初始时间 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; }
while(s2_bit==0) {
judge_dis(); }//等待按键释放 } } }
//************************************************** //S3按键处理函数 void judge_s3() {
s3_bit=1;//置IO为1,准备读入收据 if(s3_bit==0)//判断是否有按键按下 {
delay_50us(1);// 延时,去除机械抖动 if(s3_bit==0) {
switch (flag1) {
case 6://修改时间小时的十位数 zancun1+=10;
if(zancun1>=24)zancun1=zancun1;
break;
case 7://修改时间小时的个位数
zancun1=zancun1/10*10+(zancun1+1); if(zancun1>=24)zancun1=20; break;
case 8://修改时间分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 9://修改时间分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break;
case 10://修改闹钟小时的十位数 zancun1+=10;
if(zancun1>=24)zancun1=zancun1; break;
case 11://修改闹钟小时的个位数
zancun1=zancun1/10*10+(zancun1+1); if(zancun1>=24)zancun1=20; break;
case 12://修改闹钟分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 13://修改闹钟分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break; case 14:
zancun3^=1; break;
case 15://修改倒计时小时的十位数 zancun1+=10;
if(zancun1>=100)zancun1-=100; break;
case 16: //修改倒计时小时的个位数
zancun1=zancun1/10*10+(zancun1+1); break;
case 17://修改倒计时分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 18: //修改倒计时分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break;