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

📄 over_kwh.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:
// CHU SHI 

void init_over_kwh()
{
unsigned int i,i1;
over_kwh_status=noguozai;
over_kwh_status_use=noguozai;
over_kwh_continue_time=0;
over_kwh_status_a=noguozai;
over_kwh_status_a_use=noguozai;
over_kwh_a_continue_time=0;
over_kwh_status_b=noguozai;
over_kwh_status_b_use=noguozai;
over_kwh_b_continue_time=0;
over_kwh_status_c=noguozai;
over_kwh_status_c_use=noguozai;
over_kwh_c_continue_time=0;
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_A_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_A_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_B_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_B_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_C_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_C_F);


}
void over_kwh_use_start(a,addr)
unsigned char a;
unsigned int addr;
{unsigned char l;
if(1==next_point(a,4))
	{
		data_addr.addri=current_twobiaofm_block_addr(a,0);
 	  	if(data_addr.addri!=0xffff)  	   
 	     		{
 	     			time_to_wrdata();
 	       		for(l=6;l<12;l++)
	           			wr_data[l]=0;
 	       		for(l=0;l<20;l++)
 	           			wr_data[l+12]=RAM[addr+l];
 	       		write(FM,32);
 	      		}
       }
}


void over_kwh_start()
{unsigned char j;
over_kwh_status=guozai;
over_kwh_status_use=guozai;
over_kwh_continue_time=0;
byte_3_bcd_add_copy_to_fm(R_OVER_KW_NUM);
for(j=0;j<20;j++)
	RAM[R_OVERKW_CURRENT_KWH_F+j]=0;
for(j=0;j<4;j++)
	RAM[R_OVERKW_CURRENT_MAX_KW+j]=RAM[R_KW_Z+j];
over_kwh_use_start(TYPE_FM_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_F);
}



void over_kwh_a_start()
{unsigned char j;
over_kwh_status_a=guozai;
over_kwh_status_a_use=guozai;
over_kwh_a_continue_time=0;
for(j=0;j<4;j++)
	RAM[R_OVERKW_CURRENT_A_MAX_KW+j]=RAM[R_KW_A+j];
for(j=0;j<20;j++)
	RAM[R_OVERKW_CURRENT_KWH_A_F+j]=0;
over_kwh_use_start(TYPE_FM_A_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_A_F);
}



void over_kwh_b_start()
{unsigned char j;
over_kwh_status_b=guozai;
over_kwh_status_b_use=guozai;
over_kwh_b_continue_time=0;
for(j=0;j<4;j++)
	RAM[R_OVERKW_CURRENT_B_MAX_KW+j]=RAM[R_KW_B+j];
for(j=0;j<20;j++)
	RAM[R_OVERKW_CURRENT_KWH_B_F+j]=0;
over_kwh_use_start(TYPE_FM_B_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_B_F);
}



void over_kwh_c_start()
{unsigned char j;
over_kwh_status_c=guozai;
over_kwh_status_c_use=guozai;
over_kwh_c_continue_time=0;
for(j=0;j<4;j++)
	RAM[R_OVERKW_CURRENT_C_MAX_KW+j]=RAM[R_KW_C+j];
for(j=0;j<20;j++)
	RAM[R_OVERKW_CURRENT_KWH_C_F+j]=0;
over_kwh_use_start(TYPE_FM_C_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_C_F);
}

void over_kwh_use(unsigned int addr)
{unsigned char l;
time_to_wrdata();
for(l=0;l<20;l++)
	wr_data[l+6]=RAM[addr+l];
data_addr.addri=data_addr.addri+6;
write(FM,26);
}




void over_kwh_end()
{
over_kwh_status=noguozai;
over_kwh_status_use=noguozai;
over_kwh_continue_time=0;
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff) 	   
	over_kwh_use(R_OVERKW_CURRENT_KWH_F);
 }




void over_kwh_a_end()
{
over_kwh_status_a=noguozai;
over_kwh_status_a_use=noguozai;
over_kwh_a_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_A_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
   	over_kwh_use(R_OVERKW_CURRENT_KWH_A_F);
}


void over_kwh_b_end()
{
over_kwh_status_b=noguozai;
over_kwh_status_b_use=noguozai;
over_kwh_b_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_B_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
 	over_kwh_use(R_OVERKW_CURRENT_KWH_B_F);         
}

void over_kwh_c_end()
{
over_kwh_status_c=noguozai;
over_kwh_status_c_use=noguozai;
over_kwh_c_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_C_KWOVER_RECORD,0); 
if(data_addr.addri!=0xffff)
  	over_kwh_use(R_OVERKW_CURRENT_KWH_C_F);  
}

unsigned long overkwmodeuse(unsigned int addr)
{
union ll
  	{ unsigned char a[4];
           unsigned long l;
  	} tempdata1;
  unsigned char m;
tempdata1.l=0;
for(m=0;m<3;m++)
	tempdata1.a[m]=RAM[addr+m];

//l2=RAM[addr+0];
//l1=RAM[addr+1];
//l1=256*l1+l2;
//l2=RAM[addr+2];
//l1=l1+256*256*l2;
return tempdata1.l;
}


void over_kw_move_data(status,kw_addr,max_kw_addr)
unsigned char status;
unsigned int kw_addr,max_kw_addr;
{unsigned char j1;
if(status==guozai)
  	if(1==compare_4_byte(kw_addr,max_kw_addr))
		{
			for(j1=0;j1<4;j1++)
	   			RAM[max_kw_addr+j1]=RAM[kw_addr+j1];
  		}	    
}


void over_kwh_mode()
{unsigned long l,l1,l2;
 unsigned char j,j1,value;
// add time
if(over_kwh_rtc_minute!=RSOFT_RTC_MINUTE)
  	{
  		over_kwh_rtc_minute=RSOFT_RTC_MINUTE;
     		if(over_kwh_status==guozai)
      	 		{
          			byte_3_bcd_add_copy_to_fm(R_OVER_KW_TIME);	  
        		}
   	}
// zon
if(over_kwh_rtc_second!=RSOFT_RTC_SECOND)
   	{
   		over_kwh_rtc_second=RSOFT_RTC_SECOND;
		l=overkwmodeuse(R_OVER_KW_CONDITION+1);// condition over kw  , when cal, addr+1 
    	 	j=value_hex_from_bcd(RAM[R_OVER_KW_CONDITION]);// condition continue time ack
		l1=overkwmodeuse(R_KW_Z+1);
     		if(l1>=l) 
			value=guozai;
     		else 
			value=noguozai;
     		if(1==translate_status(&over_kwh_status,&over_kwh_status_use,&over_kwh_continue_time,j,value))
			{
				if(over_kwh_status==guozai)
 		  		 	over_kwh_start();
         			else 
         	   			over_kwh_end();
        		}
     // zui da
     		over_kw_move_data(over_kwh_status,R_KW_Z,R_OVERKW_CURRENT_MAX_KW);
		
// fen	
                
		l=overkwmodeuse(R_OVER_KW_ABC_CONDITION+1);// condition over kw
		j=value_hex_from_bcd(RAM[R_OVER_KW_ABC_CONDITION]);// codition continue time ack
// a
		l1=overkwmodeuse(R_KW_A+1);
		if(l1>=l) 
			value=guozai;
		else 
			value=noguozai;
		if(1==translate_status(&over_kwh_status_a,&over_kwh_status_a_use,&over_kwh_a_continue_time,j,value))
			{
				if(over_kwh_status_a==guozai)
 		   			over_kwh_a_start();
         			else 
         	   			over_kwh_a_end();
        		}
// zui da
		over_kw_move_data(over_kwh_status_a,R_KW_A,R_OVERKW_CURRENT_A_MAX_KW);
		
// b
// changed by zhanglong ---->start
		if(progfunction_biaotype==type_3_4)
			{
			l1=overkwmodeuse(R_KW_B+1);
			if(l1>=l) 
				value=guozai;
			else 
				value=noguozai;
			if(1==translate_status(&over_kwh_status_b,&over_kwh_status_b_use,&over_kwh_b_continue_time,j,value))
				{
					if(over_kwh_status_b==guozai)
	 		   			over_kwh_b_start();
	         			else 
	         	   			over_kwh_b_end();
	        		}
// zui da
			over_kw_move_data(over_kwh_status_b,R_KW_B,R_OVERKW_CURRENT_B_MAX_KW);
			}
// changed by zhanglong ---->end
// c
		 
		l1=overkwmodeuse(R_KW_C+1);
		if(l1>=l) 
			value=guozai;
		else 
			value=noguozai;
		if(1==translate_status(&over_kwh_status_c,&over_kwh_status_c_use,&over_kwh_c_continue_time,j,value))
			{
				if(over_kwh_status_c==guozai)
 		   			over_kwh_c_start();
         			else 
         	   			over_kwh_c_end();
        		}
// zui da
		over_kw_move_data(over_kwh_status_c,R_KW_C,R_OVERKW_CURRENT_C_MAX_KW);
	}
}
	










































⌨️ 快捷键说明

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