/******************************************************************* * 函数名称:d7() * 功 能:调节限制,防止数值调节超出值域 * 入口参数:无 * 出口参数:无 *******************************************************************/ void d7(void) //调节限制函数 { if(k2==1||k2==2) //计时与定时限制 if (k1==1&&*p>=24) *p=0; //小时限制 else if(*p>=60) *p=0; //分、秒限制 if(k2==3) //日历限制 if (k1==1&&*p>=100)*p=0; //年限制 else if(k1==2&&*p>12) *p=1; //月限制 else if(k1==3&&*p>n) *p=1; //日限制 if(k2==4) if (k1==2&&*p>6) *p=0; //星期限制 }/******************************************************************* * 函数名称:timer0() * 功 能:菜单切换及位加数调节 * 入口参数:无 * 出口参数:无 *******************************************************************/ /**外部中断1调节函数**/ void timer0(void)interrupt 0 using 0 //外部中断0调节 { if(k1) //判断是位调节还是菜单调节 { (*p)++; //位加数调节 d7(); //调用调节限制函数 } else { k2++; //菜单加数调节 d5(); //调用调节菜单 } } /******************************************************************* * 函数名称:timer2() * 功 能:调节位选择及关铃声 * 入口参数:无 * 出口参数:无 *******************************************************************/ void timer2(void)interrupt 2 using 2 //外部中断1调节 { TR0=0;k5=0; //手动关铃声 if(k2) //断是否处于调节状态 { if (k2==4){k1++;} //期调节位选择 if (++k1==1) p=h; //选择时位 else if(k1==2) p=m; //选择分位 else if(k1==3) p=s; //选择秒位 else k1=0; //复位 } } /***************************lns主程序snl完***************************/ |