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

📄 closetest.c

📁 通过时钟芯片计算按键开关闭合次数和时间
💻 C
📖 第 1 页 / 共 4 页
字号:
        read_initstat();
        datadr=0x00;
	    write_dr();
	    lcddata=0x30+(YEAR>>4);
	    write_data();

        datadr=0x01;
        write_dr();
        lcddata=0x30+(YEAR&0x0f);
        write_data();

        datadr=0x02;//连接符
        write_dr();
        lcddata=0xb0;
        write_data();
      
        datadr=0x03;//月
        write_dr();
        lcddata=0x30+(MONTH>>4);
        write_data();
     
        datadr=0x04;
        write_dr();//;
        lcddata=0x30+(MONTH&0x0f);
        write_data();

        datadr=0x05;
        write_dr();
        lcddata=0xb0;//连接符
        write_data();

        datadr=0x06;//日
        write_dr();//read_initstat();
        lcddata=0x30+(DAY>>4);
        write_data(); 

        datadr=0x07;
        write_dr();//read_initstat();
        lcddata=0x30+(DAY&0x0f);
        write_data(); 

        datadr=0x09;//小时
        write_dr();
        lcddata=0x30+(HOUR>>4);
        write_data();
 
        datadr=0x0a;
        write_dr();//read_initstat();
        lcddata=0x30+(HOUR&0x0f);
        write_data();

        datadr=0x0b;//冒号
        write_dr();
        if(flash_flag)lcddata=0x3a;
        else lcddata=0x20;
        write_data(); 
    
        datadr=0x0c;//分
        write_dr();//read_initstat();
        lcddata=0x30+(MINUTE>>4);
        write_data();
 
        datadr=0x0d;
        write_dr();//read_initstat();
        lcddata=0x30+(MINUTE&0x0f);
        write_data(); 

        datadr=0x0f;//星期
        write_dr();
        lcddata=0x30+WEEK;
        write_data(); 

        datadr=0x40;//T
        write_dr();
        lcddata=0x54;
        write_data(); 
    
        datadr=0x41;//I
        write_dr();
        lcddata=0x49;
        write_data();
 
        datadr=0x42;//M
        write_dr();
        lcddata=0x4d;
        write_data();

        datadr=0x43;//E
        write_dr();
        lcddata=0x45;
        write_data(); 
    
        datadr=0x44;//S
        write_dr();
        lcddata=0x53;
        write_data();
 
        datadr=0x45;//冒号
        write_dr();
        lcddata=0x3a;
        write_data();

        if(*(TIMES+1)!=0){
            datadr=0x46;//次数10位
            write_dr();
            lcddata=0x30+((*(TIMES+1))/10);
            write_data();
            datadr=0x47;//次数个位
            write_dr();
            lcddata=0x30+((*(TIMES+1))%10);
            write_data();
        }
	    else{
	        datadr=0x46;//次数百位位置在闭合次数为0时写入0
            write_dr();
            lcddata=0x30;
            write_data();
	    }
        datadr=0x49;//L:表示上次按下键时间
        write_dr();
        lcddata=0x4c;
        write_data();
 
        datadr=0x4a;//冒号
        write_dr();
        lcddata=0x3a;
        write_data();

        datadr=0x4b;//小时
        write_dr();
        lcddata=0x30+((*(TIMES+(2*(*DAY_SUM))))>>4);
        write_data();
        datadr=0x4c;
        write_dr();
        lcddata=0x30+((*(TIMES+(2*(*DAY_SUM))))&0x0f);
        write_data();

        datadr=0x4d;//冒号
        write_dr();
        lcddata=0x3a;
        write_data();

        datadr=0x4e;//分钟
        write_dr();
        lcddata=0x30+((*(TIMES+(2*(*DAY_SUM))+1))>>4);
        write_data();
        datadr=0x4f;
        write_dr();
        lcddata=0x30+((*(TIMES+(2*(*DAY_SUM))+1))&0x0f);
        write_data(); 
}
void sqw_place(){//2s中断处理
     byte n,l,p,x,y;
	 //read_initstat();
     if(!key_flag){
   	     if(*CUR_DAY!=DAY){
		   if((2*(*PRESS_SUM)+2*(*DAY_SUM))>=110){
		       for(n=0;n<108;n++){
                  *(TIMES+109-n)=*(TIMES+109-n-2);
               }
               l=*(TIMES+2*(*DAY_SUM)+1);
               if(l>1){
                   l--;
                   *(TIMES+2*(*DAY_SUM)+1)=l;
                   *TIMES=0;
                   *(TIMES+1)=0;
                   y=*DAY_SUM;
                   y--;
                   *DAY_SUM=y;
                   x=*PRESS_SUM;
                   x--;
                   *PRESS_SUM=x;

               }
               else if(l==1){
                   for(p=0;p<*PRESS_SUM-2;p++){
                       *(TIMES+2*(*DAY_SUM)+2)=*(TIMES+2*(*DAY_SUM)+4);
                   }
                   l--;
                   *(TIMES+2*(*DAY_SUM)+1)=l;
                   *TIMES=0;
                   *(TIMES+1)=0;
                   y=*DAY_SUM;
                   y--;
                   *DAY_SUM=y;
                   x=*PRESS_SUM;
                   x--;
                   *PRESS_SUM=x;
              }
              else if(l==0){
                   for(p=0;p<*PRESS_SUM-2;p++){
                       *(TIMES+2*(*DAY_SUM)+2)=*(TIMES+2*(*DAY_SUM)+4);
                   }
                   l--;
                   *(TIMES+2*(*DAY_SUM)+1)=l;
                   *TIMES=0;
                   *(TIMES+1)=0;
                   y=*DAY_SUM;
                   y--;
                   *DAY_SUM=y;
              }
           }    
		   else{
			    x=*PRESS_SUM;y=*DAY_SUM;
				if(2*x+2*y<=108){
				    for(n=0;n<2*x+2*y;n++){
					      *(TIMES+2*x+2*y+1-n)=*(TIMES+2*x+2*y-1-n);
					}
					*TIMES=0;
					*(TIMES+1)=0;
					l=*DAY_SUM;
					if(l<54)l++;
					*DAY_SUM=l;
				}
		   }
		   start_initstat();
        }
		read_initstat();
    	*CUR_DAY=DAY;	
		daycheck_flag=0;
    }
}


void change_time(){//修改时间主界面
     byte i;
	 read_initstat();
     for(i=0;i<=15;i++){//第二行全写入空白
         datadr=0x40+i;
         write_dr();
         lcddata=0x20;
         write_data();     
     }
     datadr=(0x40+move_num);//写入光标
     write_dr();
	 //if(flash_flag)
     lcddata=0xb0;
	 //else lcddata=0x20;
     write_data();  
}
void check_time(){//检查继电器闭合时间及次数子程序
     byte i;
	 read_initstat();
     for(i=0;i<=15;i++){//第二行全写入空白
         datadr=0x40+i;
         write_dr();
         lcddata=0x20;
         write_data();     
     }
     if(tiancha==0){
         datadr=0x40;//T
         write_dr();
         lcddata=0x54;
         write_data();
         datadr=0x41;//O
         write_dr();
         lcddata=0x4f;
         write_data();
         datadr=0x42;//D
         write_dr();
         lcddata=0x44;
         write_data();
         datadr=0x43;//A
         write_dr();
         lcddata=0x41;
         write_data();
         datadr=0x44;//Y
         write_dr();
         lcddata=0x59;
         write_data();

         datadr=0x48;//次第
         write_dr();
         lcddata=0x30+check_num/10;
         write_data();

         datadr=0x49;
         write_dr();
         lcddata=0x30+check_num%10;
         write_data();

         datadr=0x4a;//冒号
         write_dr();
         lcddata=0x3a;
         write_data();

         datadr=0x4b;//小时
         write_dr();
         lcddata=0x30+((*(TIMES+2*(*DAY_SUM)+move_num*2-2))>>4);
         write_data();

         datadr=0x4c;
         write_dr();
         lcddata=0x30+((*(TIMES+2*(*DAY_SUM)+move_num*2-2))&0x0f);
         write_data();

         datadr=0x4d;//冒号
         write_dr();
         lcddata=0x3a;
         write_data();

         datadr=0x4e;//分钟
         write_dr();
         lcddata=0x30+((*(TIMES+2*(*DAY_SUM)+move_num*2-1))>>4);
         write_data();

         datadr=0x4f;
         write_dr();
         lcddata=0x30+((*(TIMES+2*(*DAY_SUM)+move_num*2-1))&0x0f);
         write_data(); 
     }
     else{
         datadr=0x40;//距今天天数
         write_dr();
         lcddata=0x30+tiancha/10;
         write_data();
         datadr=0x41;
         write_dr();
         lcddata=0x30+tiancha%10;
         write_data();
         datadr=0x42;//D
         write_dr();
         lcddata=0x44;
         write_data();
         datadr=0x43;//A
         write_dr();
         lcddata=0x41;
         write_data();
         datadr=0x44;//Y
         write_dr();
         lcddata=0x59;
         write_data();
         datadr=0x45;//S

⌨️ 快捷键说明

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