}
}
}
case 7: year++;
if(year==100)
year=0;
writenyr(0,year); writecom(0x80+1); break;
if(kdown==0) {
delay(5); if(kdown==0) {
while(!kdown); di();
switch(kmenunum) //根据功能键被按次数调节相应数值 . {
case 1: second--;
if(second==-1)
second=59;
writetime(9,second);
编辑版word
writecom(0x80+0x40+10); break;
case 2: minute--;
case 3: hour--;
case 4: week--;
case 5: day--;
if(minute==-1)
minute=59;
writetime(6,minute); writecom(0x80+0x40+7); break;
if(hour==-1)
hour=23;
writetime(3,hour); writecom(0x80+0x40+4); break;
if(week==0)
week=7;
writeweek(week); writecom(0x80+11); break;
if(day==0)
编辑版word
}
}
}
}
day=31;
writenyr(6,day); writecom(0x80+7); break;
case 6: month--;
if(month==0)
month=12;
writenyr(3,month); writecom(0x80+4); break;
case 7: year--;
if(year==-1)
year=99;
writenyr(0,year); writecom(0x80+1); break;
if(kalarm==0) // 检测闹钟调节键是否按下,此条if 语句与 if(kmenunum!=0) {
// 在同一个层次。
编辑版word
delay(5); if(kalarm==0) {
flagseta=~flagseta; while(!kalarm); di();
if(flagseta==0) //此时,退出闹钟设置,保存各相关数值。 {
flagset=0; //清除时间设置标志,在 if(kalarm==0) 这个 if 语句
writecom(0x80+0x40)中,不用 flagset=1 这条语句来设置
//flagset 标志位,因为如果进行了闹钟时间的设置就会
执行前面 if(kmenunum==0) 语句中的 flagset=1 这条语句。
writedata(' '); // 清除液晶上的 “ Ri闹钟调节标志。 ” writedata(' ');
writecom(0x0c); //取消光标闪烁 dswrite(0x8e,0x00); /* 允许写操作 */
dswrite(writealarmsecond,second/10*16+second);
//
往
DS1302 中保存闹钟的时分秒值。
}
dswrite(writealarmminute,minute/10*16+minute); dswrite(writealarmhour,hour/10*16+hour); dswrite(0x8e,0x80); /* 禁止写操作 */
编辑版word