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

📄 zhuancun_n.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:
unsigned char dianliang_zhuancun_qingqiu;
unsigned char xuliang_zhuancun_qingqiu;
void init_zhuancun()
{
	xuliangqingling_qingqiu=0;
	dianliang_zhuancun_qingqiu=0;
	xuliang_zhuancun_qingqiu=0;
}

unsigned char had_zhuancun(fmaddr,hour,day)  // return 1  no cun   ,0----had cun
unsigned int fmaddr;
unsigned char hour,day;
// fmaddr------fm store    had store (last hour day month)
// hour day------chao biao or 1 day 0  hour 
{
	data_addr.addri=fmaddr;
  	read(FM,3);
  	if((wr_data[0]!=hour)||(wr_data[1]!=day)||(wr_data[2]!=RSOFT_RTC_MONTH)) 	
       	{
       		
      	  		wr_data[0]=hour;
         		wr_data[1]=day;
         		wr_data[2]=RSOFT_RTC_MONTH;
         		write(FM,3);
         		system_use_time=1;   
			return 1;
       	}
 return 0;
}

void zhuancun_use(type_biao,valuestatus,len)
unsigned char type_biao,valuestatus,len;
// type_biao-------------zhuan cun de er ci biao lei xing 
// valuestatus------------zhe ge er ci biao xu zhuan cun de zong ci shu
//                                         example   dian liang  fen 4 kuai, zhi wei 3(0,1,2,3)
// len  ------------------mei kuai de ge shu
{unsigned char l1;
  unsigned int l2;
if(rcurrent_status_zhuancun>valuestatus)
  	{
  		rstatus_zhuan_cun=zhuancun_no;
     		rcurrent_status_zhuancun=0;
	}
else
      {// read zhi zhen
       	data_addr.addri=current_twobiaofm_block_addr(type_biao,0);
       	if(data_addr.addri!=0xffff)
       		{     l2=len;
               		l2=l2*rcurrent_status_zhuancun;// offset addr
              		data_addr.addri=data_addr.addri+l2;
              		for(l1=0;l1<len;l1++)
                 			{
                   				wr_data[l1]=zhuancun[l2];// ram[]
                    				l2++;
					}
                		write(EP1,len);
       		}
       	system_use_time=1;
      		rcurrent_status_zhuancun=rcurrent_status_zhuancun+1;
     		if(rcurrent_status_zhuancun>valuestatus)
			{
				rstatus_zhuan_cun=zhuancun_no;
        			rcurrent_status_zhuancun=0;
			}

 	}
  
}







void zhuancun_dianliang()
{
	zhuancun_use(TYPE_EP1_HISTROY_KWH,3,24);// block 4
}


void zhuancun_xuliang()
{
 	zhuancun_use(TYPE_EP1_HISTROY_KW,5,28);  // block 6
}
 void zhuancun_xuliangqingling()
{
	zhuancun_use(TYPE_EP1_CLRKWSTOR_RECORD,5,28);// block 6
}

void zhuancun_fuheqi()
{
	zhuancun_use(TYPE_EP1_SEASONCHANGE_RECORD,3,22); // block 4
}





void zhuancun_dianliang_start(hour,day)
unsigned char hour,day;
// hour day------->chao biao ri huo 1 day 0 hour
{unsigned char l;
 	for(l=0;l<96;l++)
 		{
 			zhuancun[l]=RAM[R_KWH_F_BAKA+l]; // data--------->
 			wr_data[l]=zhuancun[l];
 		}
	 data_addr.addri=FM_ZHUANCUN_BUFFER;
 	write(FM,96);
 	next_point(TYPE_EP1_HISTROY_KWH,10);// kuai gun dong  0----->10(left)
 	rstatus_zhuan_cun=zhuancun_yes;// yao zhuan cun
 	rzhuancun_tpye_ercibiao=TYPE_EP1_HISTROY_KWH;// zhuan cun de er ci biao
 	rcurrent_status_zhuancun=0;   // dang qian zhuan cun de zhuang tai     
}


void zhuancun_clr_xulianguse()
{
unsigned char l,l1;
unsigned int l2;
	for(l2=0;l2<168;l2++)
     		{
     			zhuancun[l2]=RAM[R_KW_F+l2];
 			RAM[R_KW_F+l2]=0;// xu liang qing ling
		}
 	  	 // fm_eeprom    zhu yi   add -----jiao yuan	  (must) 
	copy_ram_to_fm(R_KW_F,168,FM_KW_F);
	for(l=0;l<168;l++)
		wr_data[l]=zhuancun[l];
 	data_addr.addri=FM_ZHUANCUN_BUFFER;
 	write(FM,168);  
  	init_xuliang();
 	system_use_time=1;   
  	rstatus_zhuan_cun=zhuancun_yes;
  	rcurrent_status_zhuancun=0;
}

void zhuancun_xuliang_start(hour,day)
unsigned char hour,day;
{
	zhuancun_clr_xulianguse();
  	next_point(TYPE_EP1_HISTROY_KW,10);     
 	 rzhuancun_tpye_ercibiao=TYPE_EP1_HISTROY_KW; 
}
void zhuancun_xuliangqingling_start(hour,day)
unsigned char hour,day;
{
	zhuancun_clr_xulianguse();  
  	next_point(TYPE_EP1_CLRKWSTOR_RECORD,4);   
  	rzhuancun_tpye_ercibiao=TYPE_EP1_CLRKWSTOR_RECORD;//l 2 
}




void zhuancun_cuofeng(day,hour)
unsigned char day,hour;
{unsigned char l;
	if(1==had_zhuancun(FM_CUOFENG_YICUN,hour,day))
       		{// RU HE PAN DUAN FU CUO FENG----->
     	  		next_point(TYPE_EP1_CUOFENGKWH_RECORD,2);// block num=3
         		data_addr.addri=current_twobiaofm_block_addr(TYPE_EP1_CUOFENGKWH_RECORD,0);
         		if(data_addr.addri!=0xffff)
            			{
            	 			for(l=0;l<45;l++)
            	      				wr_data[l]=RAM[R_CUOFENG_KWH_F+l];        
                			write(EP1,45);//
		  			for(l=0;l<30;l++)
		  				RAM[R_CUOFENG_KW_1+l]=0;                
                			copy_ram_to_fm(R_CUOFENG_KW_1,30,FM_CUOFENG_KW_1);             
              
            			}
     		}
}

// a 0 dianliang 1--yongdianliang 2--xuliang  19 jiance
void shangdiancun_onetime(a,day,hour)
unsigned char a,hour,day;
// a----------------twotabletype
// day hour----------chao biao ri
{unsigned char l,l1;
 unsigned int l2;
	switch(a)
		{
			case TYPE_EP1_HISTROY_KWH:
        				zhuancun_dianliang_start(hour,day);             
              				for(l=0;l<4;l++)
                				{
                					watchdog();
                  					zhuancun_dianliang();  
                  				}
              				break;     
			case TYPE_EP1_HISTROY_KW:   
 	  	 			zhuancun_xuliang_start(hour,day);
                 			for(l=0;l<6;l++)
                   				{
                   					watchdog();
                   					zhuancun_xuliang();
                 				}                 
                   			break;
 			case TYPE_EP1_CUOFENGKWH_RECORD:  // cuo feng
                  			watchdog();
                  			zhuancun_cuofeng(day, hour);
                  			break; 
			}	  	 

}




void gzhuancun_use0()// zhuan cun yong
	{
		switch(rzhuancun_tpye_ercibiao)
     				{
     					case TYPE_EP1_HISTROY_KWH:  // write eeprom
                  					zhuancun_dianliang();
                  					break;     
      					case TYPE_EP1_HISTROY_KW: 
                  					zhuancun_xuliang();
                  					break;    
      					case TYPE_EP1_SEASONCHANGE_RECORD:  // fu he qi
                  					zhuancun_fuheqi();
                  					break;
     					case TYPE_EP1_CLRKWSTOR_RECORD: // xuliang qing ling
                 					zhuancun_xuliangqingling();
                  					break;    
      					default: 
							rstatus_zhuan_cun=zhuancun_no;
                  					rcurrent_status_zhuancun=0;
                 			 		break;
      				}
	}




void zhuancun_status_copy_to_fm()
{
	wr_data[0]=rstatus_zhuan_cun;
	wr_data[1]=rzhuancun_tpye_ercibiao;
	wr_data[2]=rcurrent_status_zhuancun;
	data_addr.addri=FM_STATUS_ZHUANCUN;
	write(FM,3);
}





void zhuancun_mode()
{unsigned char hour,day,l,l1,chaobiaoriok,value,d1,d2;
 unsigned int l2;
static unsigned char g,g1,g2,g3,g4,g5;
static unsigned char use1,use2,use3; // zhuang tai ,when change ---->write fm
	if(g!=RSOFT_RTC_SECOND)  // one second one time
   		{
   			g=RSOFT_RTC_SECOND;// mu di shao du tie dian
    			g1=1;
    			g2=1;
    			g3=1;
    			g4=1;
    			g5=1;
		}
	system_use_time=0;
// cao biao ri
//-------20081220--add--lzh------->>..-----3 chaobiaori-----

	hour=RAM[R_CHAOBIAORI];
	day=RAM[R_CHAOBIAORI+1];
	chaobiaoriok=0;
	if(2==(testhour(hour)+testday(day)))
		if(day<0x29)
			chaobiaoriok=1;
if(chaobiaoriok=0)
{
	hour=RAM[R_CHAOBIAORI2];
	day=RAM[R_CHAOBIAORI2+1];
	if(2==(testhour(hour)+testday(day)))
		if(day<0x29)
			chaobiaoriok=1;
}

if(chaobiaoriok=0)
{
	hour=RAM[R_CHAOBIAORI3];
	day=RAM[R_CHAOBIAORI3+1];
	if(2==(testhour(hour)+testday(day)))
		if(day<0x29)
			chaobiaoriok=1;
}
//----20081220-add--lzh-----------..<<-----------

// chu li tong xun qing ling xuliang
	if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
		if( xuliangqingling_qingqiu==1)
	   		{ 
	   			byte_2_bcd_add(R_CLRKW_NUM);// num
             			copy_ram_to_fm(R_CLRKW_NUM,2,R_CLRKW_NUM);
             			one_time_two_table_start(TYPE_FM_CLRKW_RECORD);
	   			if(chaobiaoriok==1)	   // you chao biao ri
					{ 
						xuliangqingling_qingqiu=0;      
 	  	  				zhuancun_xuliangqingling_start(hour,day);
 	  	 			}
	       		else	       	
	       			{
	       				xuliangqingling_qingqiu=0;   // wu chao biao ri
	       				dianliang_zhuancun_qingqiu=1;
                   				xuliang_zhuancun_qingqiu=1;	       	
					}
//	       		RFLAG_DEMANGCLR_LOCK=1;
//                 		RTIMER_DEMANGCLR_LOCK=timevalue_xuliangqingling_lock; 
//                 		if((RSTATUS_RUN==TEST)&&(progfunction_security==yes))
//	            			{
//                    				RFLAG_DEMANGCLR_LOCK=0;
//                     			RTIMER_DEMANGCLR_LOCK=0;
//                     		}
//                 		move_int_to_fm( RTIMER_DEMANGCLR_LOCK,FM_TIMER_DEMANGCLFM_LOCK);               
 	  		}
	if(dianliang_zhuancun_qingqiu==1) 
 	  	{
 	  		if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
 	        		{
 	         			zhuancun_dianliang_start(hour,day);
                			dianliang_zhuancun_qingqiu=0;
                		}
 	   	}
	else
       	{
         		if(chaobiaoriok==1)
         			if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))// one second can zhuangcun        
  					// DIANLIANG    
  	       				if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
  	          				if(g1==1)// second one time
  	  	       					{  g1=0;    
                                                           {	  	            						
							     if(1==had_zhuancun(FM_YIZHUANCUN_DIANLIANG,hour,day))
                                        {
 	                        				zhuancun_dianliang_start(hour,day); 	  	 	           
 	  	            					  
 	                				}
        }
    }
              } 
	if(xuliang_zhuancun_qingqiu==1)
        	{
        		if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
              		{
               			zhuancun_xuliang_start(hour,day);
               			xuliang_zhuancun_qingqiu=0;
               		}
          	}
	else
     		{if(chaobiaoriok==1)
            		if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))// one second can zhuangcun
  			//xuLIANG   
                 	if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
 	  	  	// WRITE Ram
 	  	    	{ if(g3==1)// second one time
  	  	          {  	  g3=0;
                            if(1==had_zhuancun(FM_XULIANG_YIZHUANCUN_DATE,hour,day))
 	                     	{
                                  zhuancun_xuliang_start(hour,day); 
                                 }
 	  	             }
 	               	}
    		}	
 
	//  cuofeng  ZHUAN CUN
	#if(progfunction_cuofeng==yes)
		{if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
           	  {           				value=0;
             		if(chaobiaoriok==1) 
             	    		{ if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))
             	         		if(g5==1)// second one time
  	  	              			{  g5=0;
                              			value=1;
                              			d1=hour;
                              			d2=day;
                              			}
                			}
             				else
          	    			{if((RSOFT_RTC_DAY==1)&&(RSOFT_RTC_HOUR==0)) 
                        			if(g5==1)// second one time
  	  	              			{        g5=0;
                              				value=1;
                              				d1=0;
                              				d2=1;
                              			}
                			}
          				if(1==value)
          				zhuancun_cuofeng(d2,d1);
  					}
	}
#endif


// add fu he qi zhuan cun
	if((fuhe_changed==1)&&(system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
		{
			fuhe_changed=0;
			time_to_wrdata();
			for(l=0;l<6;l++)
	 			zhuancun[l]=wr_data[l];
			for(l=0;l<80;l++)
 	 			zhuancun[l+6]=RAM[R_KWH_F_BAKA+l]; 
			for(l=0;l<86;l++)
				wr_data[l]=zhuancun[l];
			data_addr.addri=FM_ZHUANCUN_BUFFER;
			write(FM,86);	  	
			next_point(TYPE_EP1_SEASONCHANGE_RECORD,3);                   
			system_use_time=1;   
			rstatus_zhuan_cun=zhuancun_yes;
			rzhuancun_tpye_ercibiao=TYPE_EP1_SEASONCHANGE_RECORD;
			rcurrent_status_zhuancun=0;
			wr_data[0]=RAM[R_ONUS_1+0+3*current_fuheqi];//day
			wr_data[1]=RAM[R_ONUS_1+1+3*current_fuheqi];// month
			data_addr.addri=FM_FUHEQIYIZHUANCUN_DATE;
			write(FM,2);
		}

	// add  yu yue  0 1 FM  2--11 ---->EEPROM
	if((rqingqiu_yuyue_cun==1)&&(system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
		{rqingqiu_yuyue_cun=0;
  			data_addr.addri=FM_YUYUE_ZHUANCUNQINGQIU;
  			wr_data[0]=0;
  			write(FM,1);
  			time_to_wrdata();
  			data_addr.addri=FM_YUYUEDONGJIE_BUFFER;
  			for(l=0;l<96;l++)
  				wr_data[l+6]=RAM[R_KWH_F_BAKA+l];
  			for(l=0;l<7;l++)
  				{
  					wr_data[l+96+6]=RAM[R_KW_F+l];
  					wr_data[l+96+7+6]=RAM[R_KW_R+l];
  				}
   			write(FM,116);
			system_use_time=1;  
		}




	if(system_use_time==0)
  		{  			if(rstatus_zhuan_cun==zhuancun_yes)
         			gzhuancun_use0();           
           
        	}

	// ZHUAN TAI BAO CUN ZHI TIE DIAN
	if((use1!=rstatus_zhuan_cun)||(use2!=rzhuancun_tpye_ercibiao)||(use3!=rcurrent_status_zhuancun))
		{
			use1=rstatus_zhuan_cun;
			use2=rzhuancun_tpye_ercibiao;
			use3=rcurrent_status_zhuancun;
			zhuancun_status_copy_to_fm();
		}



	// add fu he qi zhuan cun

	if(1==system_use_time) 		system_control_time2=1;


}
            

































⌨️ 快捷键说明

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