| 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();
 }
 |