//******************键盘扫描程序*********************** void keyscan(void) {
P3=0XFF; p3=P3;
if(p3==0XFF) return;
if(p3==0XFE) {
if(p3==0XFD) {
while(p3==0XFD) // key_add键按下到弹起期间 { delay(10);
if(p3==0XFD) { }
add();
//key_add键
delay(10); }
if(p3==0XFE) {
moshi++; }
while(p3==0XFE) // key_mode键按下到弹起期间 { p3=P3;
switch(moshi)
case 0:show(); break; //显示正常走时
case 1:show1();break; //显示设置时间 case 2:show2();break; //显示闹钟时间
{
if(moshi>=3) moshi=0;
//key_mode键
}
}
23
}
p3=P3; switch(moshi)
case 0:show(); break; //显示正常走时
case 1:show1();break; //显示设置时间 case 2:show2();break; //显示闹钟时间
{
}
}
if(p3==0XFB) {
if(p3==0XF7) {
//key_move键
delay(10); }
//key_confirm键
if(p3==0XFB) { }
while(p3==0XFB) // key_move键按下到弹起期间 {
p3=P3; switch(moshi)
case 0:show(); break; //显示正常走时
case 1:show1();break; //显示设置时间 case 2:show2();break; //显示闹钟时间 mov++;
if(mov>=3) mov=0;
{
}
}
delay(10);
if(p3==0XF7) { }
confirm();
24
}
}
while(p3==0XF7) // key_confirm键按下到弹起期间 { p3=P3;
switch(moshi)
case 0:show(); break; //显示正常走时
case 1:show1();break; //显示设置时间 case 2:show2();break; //显示闹钟时间
{
}
}
//******************调时调脑钟增数程序*********************** void add(void) {
//模式1,调时模式,调时增数 if(moshi==1 && mov==0) {sec1++;}
if(moshi==1 && mov==1) {min1++;}
if(moshi==1 && mov==2) {hour1++;}
//模式2,闹钟设定模式,闹钟增数 if(moshi==2 && mov==0) {sec2++;}
if(moshi==2 && mov==1) {min2++;}
if(moshi==2 && mov==2) {hour2++;} }
//******************确认键服务函数*************************** void confirm(void)
25
{
if(moshi==1) {
t=TF0=0; sec=sec1;
//模式1,调时环境下校正时间
min=min1; hour=hour1; sec1=min1=hour1=0;
alarm_en++; //开闭闹钟 if(alarm_en>1) alarm_en=0; }
//******************闹钟判断函数****************************** void alarm_judge(void) {
if(hour==hour2 && min==min2 && sec==sec2 ) //定时到达设定标志 }
//******************闹钟响铃函数****************************** void beep(void) { }
P1=!P1;
{ alarm_flag=1; }
//常规响铃一分钟
{ alarm_flag=0; }
if(hour==hour2 && min==min2+1)
}
26

