⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keycount.c

📁 通过时钟芯片计算按键开关闭合次数和时间
💻 C
📖 第 1 页 / 共 4 页
字号:
											 del_flag=0;
										}
                                    }
                                    else if(((changetime_flag)&&(!checktime_flag))&&(!del_flag)){//修改时间界面,改动光标指示处时间值
                                         switch(move_num){
                                              case 0x00:  datadr=0x00;//修改年代十位,并改写时钟芯片
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x00;
                                                          write_dr();
                                                          if((YEAR>>4)<9){  
                                                             lcddata=0x30+(YEAR>>4)+1;
                                                             MCB=0x80;
                                                             YEAR=YEAR+0x10;
                                                             MCB=0x02;
                                                          }
                                                          else {
                                                              lcddata=0x30;
                                                              MCB=0x80;
														      YEAR=YEAR&0x0f; 
															  MCB=0x02;
                                                          }
                                                          write_data();
                                                          break; 
                                               case 1:    datadr=0x01;//修改年代个位,并改写时钟芯片
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x01;
                                                          write_dr();
                                                          if((YEAR&0x0f)<9){  
                                                             lcddata=0x30+(YEAR&0x0f)+1;
															 MCB=0x80;
                                                             YEAR=YEAR+1;
															 MCB=0x02;
                                                          }
                                                          else {
                                                             lcddata=0x30;
															 MCB=0x80;//read_initstat();
                                                             YEAR=(YEAR>>4)<<4;
															 MCB=0x02;
                                                          }
                                                          write_data();
                                                          break; 
                                               case 3:    datadr=0x03;//修改月份十位,并改写时钟芯片
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x03;
                                                          write_dr();
														  if((MONTH>>4)>1){
                                                             if((MONTH&0x0f)<=2){
														        lcddata=0x31;
														        MCB=0x80;
															    MONTH=(MONTH&0x1f);
															    MCB=0x02;
															    write_data();
                                                                datadr=0x03;
                                                                write_dr();
															 }
															 if((MONTH&0x0f)>2){
														        lcddata=0x30;
														        MCB=0x80;
															    MONTH=(MONTH&0x0f);
															    MCB=0x02;
															    write_data();
                                                                datadr=0x03;
                                                                write_dr();
															 }
														  }
                                                          if((MONTH>>4)==1){  
                                                                lcddata=0x30;
															    MCB=0x80;//read_initstat();
                                                                MONTH=(MONTH&0x0f);
															    MCB=0x02;
                                                             }
                                                          else if((MONTH>>4)==0){
                                                                lcddata=0x31;
														        MCB=0x80;//read_initstat();
                                                                MONTH=MONTH+0x10;
															    MCB=0x02;
                                                              }
                                                          write_data();
                                                          break; 
                                               case 4:    datadr=0x04;//修改月份个位,并改写时钟芯片
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x04;
                                                          write_dr();
														  if((MONTH>>4)>1){
														     lcddata=0x31;
														     MCB=0x80;
															 MONTH=0x01;
															 MCB=0x02;
															 write_data();
                                                             datadr=0x04;
                                                             write_dr();
														  }
														  if((MONTH>>4)==0){
														     if((MONTH&0x0f)<0x09){
                                                                 lcddata=0x30+(MONTH&0x0f)+1;
														    	 MCB=0x80;
                                                                 MONTH=MONTH+0x01;
															     MCB=0x02;
                                                             }
														     else if((MONTH&0x0f)>=0x09){
                                                                 lcddata=0x31;
															     MCB=0x80;
                                                                 MONTH=0x01;
															     MCB=0x02;
                                                              }
														  }
														  else if((MONTH>>4)==1){
                                                              if((MONTH&0x0f)<2){  
                                                                 lcddata=0x30+(MONTH&0x0f)+1;
															     MCB=0x80;//read_initstat();
                                                                 MONTH=MONTH+0x01;
															     MCB=0x02;
                                                              }
                                                              else if((MONTH&0x0f)>=2){
                                                                 lcddata=0x30;
														         MCB=0x80;//read_initstat();
                                                                 MONTH=0x10;
															     MCB=0x02;
                                                              }
														  }
                                                          write_data();
                                                          break;
                                               case 6:    datadr=0x06;//修改日期十位,并改写时钟芯片
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x06;
                                                          write_dr();
														  if((DAY==0x00)||(DAY>0x31)){
														     lcddata=0x31;
                                                             MCB=0x80;
                                                             DAY=0x10;
															 MCB=0x02;
															 write_data();
														     datadr=0x06;
                                                             write_dr();
														  }
														  if(MONTH!=2){
														     if(DAY&0x0f>=2){
															    if((DAY>>4)>=2){
															       lcddata=0x30;
																   MCB=0x80;
                                                                   DAY=DAY&0x0f;
															       MCB=0x02;
																}
																else if(DAY>>4<2){
																   lcddata=0x30+(DAY>>4)+1;
																   MCB=0x80;
                                                                   DAY=DAY+0x10;
															       MCB=0x02;
																}
																
															 }
														     else if((DAY>>4)<3){
															     lcddata=0x30+((DAY>>4)+1);
                                                                 MCB=0x80;
                                                                 DAY=DAY+0x10;
															     MCB=0x02;
															 }
															 else if(((DAY>>4)>=3)&&((DAY&0x0f)==0)){
															     lcddata=0x31;
                                                                 MCB=0x80;
                                                                 DAY=0x10;
															     MCB=0x02;
															 }
                                                             else if(((DAY>>4)>=3)&&((DAY&0x0f)==1)){
															     lcddata=0x30;
                                                                 MCB=0x80;
                                                                 DAY=0x01;
															     MCB=0x02;
															 }
														  }
														  else if(MONTH==0x02){
														     if((DAY>>4)<2){
															     lcddata=0x30+((DAY>>4)+1);
                                                                 MCB=0x80;
                                                                 DAY=DAY+0x10;
															     MCB=0x02;
															 }
															 else if(((DAY>>4)>=2)&&((DAY&0x0f)==0)){
															     lcddata=0x31;
                                                                 MCB=0x80;
                                                                 DAY=0x10;
															     MCB=0x02;
															 }
															 else if(((DAY>>4)>=2)&&((DAY&0x0f)==1)){
															     lcddata=0x30;
                                                                 MCB=0x80;
                                                                 DAY=0x01;
															     MCB=0x02;
															 }
														  }
                                                          write_data();
                                                          break;
                                               case 7:    datadr=0x07;//日期个位的修改
                                                          write_dr();
                                                          lcddata=0x20;
                                                          write_data();
                                                          datadr=0x07;
                                                          write_dr();
														  if(DAY==0x00){
														     lcddata=0x31;
                                                             MCB=0x80;//read_initstat();
                                                             DAY=0x01;
															 MCB=0x02;
															 datadr=0x07;
                                                             write_dr();
														  }
                                                          if(DAY>0x31){
														     lcddata=0x31;
															 write_data();
										                     datadr=0x06;
                                                             write_dr();
															 lcddata=0x30;
															 write_data();
															 MCB=0x80;
                                                             DAY=0x01;
															 MCB=0x02;
															 datadr=0x07;
                                                             write_dr();
														  }
                                                          if(MONTH!=0x02){
														     if((DAY>>4)<3){
														        if((DAY&0x0f)<9){
															        lcddata=0x30+(DAY&0x0f)+1;
														    	    MCB=0x80;
                                                                    DAY=DAY+0x01;
															        MCB=0x02;
														     	 }
															     else if((DAY&0x0f)>=9){
                                                                     if((DAY>>4)!=0){ 
															            lcddata=0x30;
														    	        MCB=0x80;
                                                                        DAY=DAY&0xf0;
															            MCB=0x02;
															    	 }
																     else if((DAY>>4)==0){ 
															            lcddata=0x31;
														    	        MCB=0x80;
                                                                        DAY=DAY&0xf1;
															            MCB=0x02;
																     }
															     }  
														     }
															 else if((DAY>>4)==3){
															     if((MONTH==0x01)||(MONTH==0x03)||(MONTH==0x05)||(MONTH==0x07)||(MONTH==0x08)||(MONTH==0x10)||(MONTH==0x12)){
																     if((DAY&0x0f)==0){
																	    lcddata=0x31;
														    	        MCB=0x80;
                                                                        DAY=0x31;
															            MCB=0x02;
																	 }
																	 else if((DAY&0x0f)==1){
																	    lcddata=0x30;
														    	        MCB=0x80;
                                                                        DAY=0x30;
															            MCB=0x02;
																	 }
																 }
                                                                 if((MONTH==0x04)||(MONTH==0x06)||(MONTH==0x09)||(MONTH==0x11)){
																	    lcddata=0x30;
														    	        MCB=0x80;
                                                                        DAY=0x30;
															            MCB=0x02;
																 }
															 }
														 }
														 else if(MONTH==0x02){
														     if((DAY>>4)<2){
														        if((DAY&0x0f)<9){
															        lcddata=0x30+(DAY&0x0f)+1;
														    	    MCB=0x80;
                                                                    DAY=DAY+0x01;
															        MCB=0x02;
														     	 }
															     else if((DAY&0x0f)>=9){
                                                                     if((DAY>>4)!=0){ 
															            lcddata=0x30;
														    	        MCB=0x80;
                                                                        DAY=DAY&0xf0;
															            MCB=0x02;
															    	 }
																     else if((DAY>>4)==0){ 
															            lcddata=0x31;
														    	        MCB=0x80;
                                                                        DAY=DAY&0xf1;
															            MCB=0x02;
																     }
															     }  
														     }
															 else if((DAY>>4)==2){
															     if((YEAR%4)!=0){
																     if((DAY&0x0f)<8){
																	     lcddata=0x30+(DAY&0x0f)+1;
														    	         MCB=0x80;
                                                                         DAY=DAY+1;
															             MCB=0x02;
																	 }
																	 else if((DAY&0x0f)==8){
																	     lcddata=0x30;
														    	         MCB=0x80;
                                                                         DAY=0x20;
															             MCB=0x02;
																	 }
																 }
																 else{
																     if((DAY&0x0f)<9){
																	     lcddata=0x30+(DAY&0x0f)+1;
														    	         MCB=0x80;
                                                                         DAY=DAY+1;
															             MCB=0x02;
																	 }
																	 else if((DAY&0x0f)==9){
																	     lcddata=0x30;
														    	         MCB=0x80;
                                                                         DAY=0x20;
															             MCB=0x02;
																	 }
																 }
															 }
														 }
                                                         write_data();
                                                         break;
                                               case 9:   datadr=0x09;//修改小时10位,并改写时钟芯片

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -