}
}
break;
case 7: if(newval==0xff) newval=59; DisplaySecond(newval); break;
default:break;
ucData1=newval/10;//十六进制转BCD码 ucData2=newval; newval=ucData1*16+ucData2; P8563_writeData(newaddr,newval); }
void delayKEY(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
//键盘扫描程序 void key_scan(void) { uchar s1num=0; //s1num记录光标的位置的编号 if(menu==0) { delayKEY(5); if(menu==0) { while(!menu); //menum测试到由0到1的变化,也就是按下松开的变化,s1num加1 s1num++; while(1) { if(menu==0) { delayKEY(5); if(menu==0) { while(!menu); s1num++; //menum测试到由0到1的变化,也就是按下松开的变化,s1num再加1 } }
字。 1302
P8563_writeData(0x0,0x20);//停止计时,开始相关设置。 if(s1num==1) {
Display(1,2,0*16,21);//设 Display(1,2,1*16,22);//置 Display(1,2,2*16,0);//年 Display(1,2,3*16,27);//空格
year=P8563_ReadData(0x08); year=year&0xff;//读取年
Reverse_Display=1;
DisplayYear(((year/16)*10+(year)));//设置年的时候反相显示即黑底白Reverse_Display=0;
if(add==0) { delayKEY(3); if(add==0) { while(!add); turn_val(year,1,0x08,1); } } if(dec==0) { delayKEY(3); if(dec==0) { while(!dec); turn_val(year,0,0x08,1);//读取当前年值,根据减小年值,并写入 } } } if(s1num==2)
黑底白字
{
DisplayYear(((year/16)*10+(year))); //年变回白底黑字。 Display(1,2,0*16,21);//设 Display(1,2,1*16,22);//置 Display(1,2,2*16,1);//月 Display(1,2,3*16,27);//空格
month=P8563_ReadData(0x07); month=month&0x1f;//读取月 Reverse_Display=1;
DisplayMonth(((month/16)*10+(month))); //设置月的时候反相显示即Reverse_Display=0; if(add==0) { delayKEY(3); if(add==0) { while(!add); turn_val(month,1,0x07,2); } }
if(dec==0) { delayKEY(3); if(dec==0) { while(!dec); turn_val(month,0,0x07,2); } }
}
if(s1num==3) {
DisplayMonth(((month/16)*10+(month))); //月变回白底黑字。 Display(1,2,0*16,21);//设 Display(1,2,1*16,22);//置 Display(1,2,2*16,2);//日 Display(1,2,3*16,27);//空格
day=P8563_ReadData(0x05); day=day&0x3f;//读取日 Reverse_Display=1;
DisplayDay(((day/16)*10+(day))); //设置日的时候反相显示即黑底白字 Reverse_Display=0;
if(add==0) { delayKEY(3); if(add==0) { while(!add); turn_val(day,1,0x05,3); } }
if(dec==0) { delayKEY(3); if(dec==0) { while(!dec);
底白字
turn_val(day,0,0x05,3); //写入日寄存器
} } }
if(s1num==4) {
DisplayDay(((day/16)*10+(day)));//天变回白底黑字。 Display(1,2,0*16,21);//设 Display(1,2,1*16,22);//置 Display(1,2,2*16,3);//星 Display(1,2,3*16,4);//期
week=P8563_ReadData(0x06); week=week&0x07;//读取星期 Reverse_Display=1;
DisplayWeek(((week/16)*10+(week))); //设置星期的时候反相显示即黑Reverse_Display=0;
if(add==0)
白字
}
{ delayKEY(3); if(add==0) { while(!add); turn_val(week,1,0x06,4); } }
if(dec==0) { delayKEY(3); if(dec==0) { while(!dec); turn_val(week,0,0x06,4); } }
if(s1num==5) {
DisplayWeek(((week/16)*10+(week)));//星期变回白底黑字 Display(1,2,0*16,21);//设 Display(1,2,1*16,22);//置 Display(1,2,2*16,5);//时 Display(1,2,3*16,27);//空格
hour=P8563_ReadData(0x04); hour=hour&0x3f;//读取小时
Reverse_Display=1;
DisplayHour(((hour/16)*10+(hour))); //设置时的时候反相显示即黑底Reverse_Display=0;
if(add==0) { delayKEY(3); if(add==0) { while(!add); turn_val(hour,1,0x04,5); } }