void keypush()
{
rd=0;
if(S9==0)
{
delay(5);
if(S9==0)
{
while(S9==0)
{
}
S_num++;
flag=1;
switch(S_num)
{
case 1:
write_com(0x0F);
write_com(0xC0+SECOND+1);
break;
case 2:
write_com(0xC0+MINUTE+1);
break;
case 3:
write_com(0xC0+HOUR+1);
break;
case 4:
Alarm_flag++;
break;
case 5:
flag=0;
S_num=0;
write_com(0x0C);
if(Alarm_flag==2)
{
set_alarm(hour,minute,second);
Alarm_flag=0;
}
else
{
DS_write(0,second);
DS_write(2,minute);
DS_write(4,hour);
}
break;
default:
break;
}
}
}
if(S9!=0)
{
if(S13==0)
{
delay(5);
if(S13==0)
{
while(S13==0)
{
}
switch(S_num)
{
case 1:
second++;
if(second==60)
second=0;
write_time(SECOND,second);
write_com(0xC0+SECOND+1);
break;
case 2:
minute++;
if(minute==60)
minute=0;
write_time(MINUTE,minute);
write_com(0xC0+MINUTE+1);
break;
case 3:
hour++;
if(hour==24)
hour=0;
write_time(HOUR,hour);
write_com(0xC0+HOUR+1);
break;
default:
break;
}
}
}
if(S17==0)
{
delay(5);
if(S17==0)
{
while(S17==0)
{
}
switch(S_num)
{
case 1:
if(second==0)
second=60;
second--;
write_time(SECOND,second);
write_com(0xC0+SECOND+1);
break;
case 2:
if(minute==0)
minute=60;
minute--;
write_time(MINUTE,minute);
write_com(0xC0+MINUTE+1);
break;
case 3:
if(hour==0)
hour=24;
hour--;
write_time(HOUR,hour);
write_com(0xC0+HOUR+1);
break;
default:
break;
}
}
}
}
}
加了这个函数之后就不显示了,这个函数有问题?
而且中间还显示正常过一次。快要疯了0 0
主函数:
flag=0;
EA=1;
EX0=1;
IT0=1;
LCD_init();
/* DS_write(0x0A,0x20);
DS_write(0x0B,0x26);
set_time();*/
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(Year[num]);
delay(5);
}
write_com(0xC0+6);
write_data(':');
write_com(0xC0+9);
write_data(':');
while(1)
{
if(flag==0)
{
hour=DS_read(4);
minute=DS_read(2);
second=DS_read(0);
write_time(HOUR,hour);
write_time(MINUTE,minute);
write_time(SECOND,second);
}
keypush();
}
|