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

📄 global_function.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 5 页
字号:

		
		if(1==tingdian_ack())
			return 0;
		for(i=0;i<26;i++)
			{
				data_addr.addri=FM_CUOFENG_BUFFER+i*100;
  				write(FM,100);
  				watchdog();
				if(1==tingdian_ack())
					return 0;
			}
		data_addr.addri=FM_CUOFENG_BUFFER+2600;
 		write(FM,39);
		if(type==0)// value =0   all clr
			{
				data_addr.addri=FM_PROGRAM_RECORD_BLOCKADDR;//FM_CUOFENG_BUFFER+2639;
				write(FM,128);
			}
		if(1==tingdian_ack())
			return 0;
		for(i=0;i<8;i++)
			{
				data_addr.addri=i*112+FM_ALLLOSTV_RECORD_BLOCKADDR;//FM_CUOFENG_BUFFER+2639+128+i*112;
				write(FM,112);
				watchdog();
				if(1==tingdian_ack())
					return 0;
			}
		if(type==0)// all clr
			{
				for(i=0;i<33;i++)
					{
						data_addr.addri=i*50+FM_CLRKW_RECORD_BLOCKADDR;//FM_CUOFENG_BUFFER+3663+50*i;
						write(FM,50);
						if(1==tingdian_ack())
							return 0;
						watchdog();
					}
				
			}
		for(l=0;l<24;l++)
     			dianliang_write(l);
		// wr_data changed
		if(1==tingdian_ack())
			return 0;
 		for(a=0;a<200;a++)
			wr_data[a]=0;
		 //ep1
 		for(i=0;i<161;i++)
       		{
       			watchdog();
        		data_addr.addri=32*i+EP1_HISTROY_KWH_BLOCKADDR;
      	  		write(EP1,32);
			if(1==tingdian_ack())
				return 0;
        	} 

		if(type==0)// all clr
			{
				for(i=0;i<32;i++)
					{
						data_addr.addri=EP1_BESPOKENPRICE_RECORD_BLOCKADDR + 26*i;//EP1_HISTROY_KWH_BLOCKADDR+5152+26*i;
						write(EP1,26);
						watchdog();
						if(1==tingdian_ack())
							return 0;
					}
			}
		for(i=0;i<34;i++)
       		{
       			watchdog();
        		data_addr.addri=40*i+EP1_SEASONCHANGE_RECORD_BLOCKADDR;//EP1_HISTROY_KWH_BLOCKADDR+5984;
      	  		write(EP1,40);
			if(1==tingdian_ack())
				return 0;
        		} 
		if(type==0)
			{
				for(i=0;i<192;i++)
					{
						watchdog();
        					data_addr.addri=21*i+EP1_KWHPROGRAM_RECORD_BLOCKADDR;//EP1_HISTROY_KWH_BLOCKADDR+7344;
      	  					write(EP1,21);
						if(1==tingdian_ack())
							return 0;
					}
			}
		watchdog();
 		data_addr.addri=EP1_YONGHUHAO_SETTIME;
 		write(EP1,24);
		data_addr.addri=EP1_POWERDOWNALLLOSTV_NUM;
		write(EP1,30);
		if(1==tingdian_ack())
			return 0;
		data_addr.addri=EP1_POWERDOWNALLLOSTV_STARTDATE3;//EP1_POWERDOWNALLLOSTV_NUM+30;
		write(EP1,36);			
 		init_xuliang();
		clr_had_jiaoshi();
		 		for(a=0;a<200;a++)
			wr_data[a]=0;
	 		for(i=0;i<104;i++)
       		{
        		data_addr.addri=EP1_HISTROY_KWH2_BLOCKADDR+64*i;
      	  		write(EP1,64);
       			watchdog();
			if(1==tingdian_ack())
				return 0;
//			speekset;				//beep test
        	} 

		
		return 1;
	}
  else
  	return 0;
}

unsigned char longpingdianliang(unsigned char *point)
// check total kwh price kwh, 
//if !=  then total=price1+price2+price3+price4

// bcdaddbuffer[0]----bcdaddbuffer[4]   augend
// bcdaddbuffer[5]----bcdaddbuffer[9]   add
// sum-------->augend
{unsigned char l,l1,value;
value=1;
for(l=0;l<10;l++)
	bcdaddbuffer[l]=0;
// all price kwh add------>bcdaddbuffer
for(l=0;l<4;l++)
     {      
      		for(l1=0;l1<4;l1++)
	    		bcdaddbuffer[5+l1+1]=*(point+4+l*4+l1);
      		byte5_bcdadd_byte5();
      }
// total kwh compare to all price kwh 
l1=1;
for(l=0;l<4;l++)
	{
		if(*(point+l)!= bcdaddbuffer[l+1])
			 l1=0;
	}
if(l1==0)
    {
    	value=0;
      	err_kwh_envent();
      	for(l=0;l<4;l++)
	    	*(point+l)= bcdaddbuffer[l+1];
    }
return value;
}

unsigned char zhejiang_set_dianliang_ok(unsigned char *point)
	// set kwh    
	// total kwh==all price kwh
{unsigned char l,l1;
for(l=0;l<10;l++)
	bcdaddbuffer[l]=0;
for(l=0;l<4;l++)
     {
      		bcdaddbuffer[5]=0;
      		for(l1=0;l1<4;l1++)
	    		bcdaddbuffer[6+l1]=*(point+4+l*4+l1);
      		byte5_bcdadd_byte5();
      }
l1=1;
for(l=0;l<4;l++)
	if((*(point+l))!= bcdaddbuffer[1+l])
		 l1=0;
return l1;
}

void my_tongdao_start()
// from tong dao   init
 {
 	if(tongdao==comm485_1)
 		{
 			boud_use=RAM[R_BOUD];
         		RSTATUS_485_1=START;
         		RCOMM1_TIMER=0;
         		RLEN_485_R_BUFFER_1=0;
         		RPROTOCOL_485_1=PROTOCOL_START;
         		RDISPLAY_4851INFO_STATUS=INFO_START;
         		RCURRENTADDR_485_R_BUFFER_1=0;
         		u2brg=table_brg_value_from_boud[boud_use];//boud_use
         		u2c0=table_u2c0_value_form_boud[boud_use];
         		u2mr=0;
         		u2mr=0x6;//6
         		ucon=0x01;
         		u2c1=0x7;
          		s2ric=7;
		}
   	else
   		if(tongdao==comm485_0)
   			{
   				 boud_use_0=RAM[R_BOUD];
                		 RSTATUS_485_0=START;
                		 RCOMM0_TIMER=0;
                	 	 RLEN_485_R_BUFFER_0=0;
		                RPROTOCOL_485_0=PROTOCOL_START;
		                RDISPLAY_4850INFO_STATUS=INFO_START;
		                RCURRENTADDR_485_R_BUFFER_0=0;
		                u0brg=table_brg_value_from_boud_0[boud_use_0];//boud_use
		                u0c0=table_u0c0_value_form_boud[boud_use_0];
		                u0mr=0;
		                u0mr=0x6;//6
		                ucon=0x01;
		                u0c1=0x7;
		                s0ric=7;
			}
          	else
   	          	{
   	          		remote_status=remote_phase_err;            //no err wait next   question                                    
                   		RDISPLAY_REMOTEINFO_STATUS=INFO_START;
                   		RPROTOCOL_REMOTE_1=PROTOCOL_START;
               	}
}


//  read rtc value ----->rsoft rtc
void move_rtc8025_to_softrtc()
{RSOFT_RTC_SECOND=rtc8025_timevalue[0];
  RSOFT_RTC_MINUTE=rtc8025_timevalue[1];
  RSOFT_RTC_HOUR=rtc8025_timevalue[2];
  RSOFT_RTC_DAY=rtc8025_timevalue[4];
  RSOFT_RTC_MONTH=rtc8025_timevalue[5];
  RSOFT_RTC_YEAR=rtc8025_timevalue[6];
}

/*****************************************************************/

void one_time_two_table_start(unsigned char a)
// a  ==twice table type
{
unsigned char l,l1,l2;
if(1==next_point(a,TABLE_TWO1[a].numofsubblock-1))
	{
		data_addr.addri=current_twobiaofm_block_addr(a,0);
  		if(data_addr.addri!=0xffff)
  			{
       // date
      // qi shi shi jian
         			time_to_wrdata();
         			for(l1=6;l1<12;l1++)
	       				wr_data[l1]=0;
         			if((a!=TYPE_EP1_BIAOGAI_RECORD)&&(a!=TYPE_EP1_DUANNIUGAI_RECORD))
              				write(FM, 12);
         			else 
         				write(EP1,12);
        		}
   	}
}
void one_time_two_table_end(unsigned char a)
	// a== twice table type
{
unsigned char l,l1,l2;
data_addr.addri=current_twobiaofm_block_addr(a,0);
if(data_addr.addri!=0xffff)
    {
    	data_addr.addri=data_addr.addri+6;
// date
// jie shu shi jian
      time_to_wrdata();
	if((a!=TYPE_EP1_BIAOGAI_RECORD)&&(a!=TYPE_EP1_DUANNIUGAI_RECORD))
      		write(FM, 6);
	else
		write(EP1,6);
     }
}


// when comm end -->do (the status can't translate--->start or err,  is rec  must to start)
void comm_do_endcheck()
{
	if(tongdao==comm485_1)
  		{
  			if(RSTATUS_485_1==REC) 
				my_tongdao_start();
		}
    	else
    		if(tongdao==comm485_0)
    			{
    				if(RSTATUS_485_0==REC) 
					my_tongdao_start();
			}
    		else
            		{
            			if((remote_status==remote_phase_hualong)||(remote_status==remote_phase_zhejiang_quanguo))
           	 			my_tongdao_start();
			}
}


//  place reference  to   display point
void set_reference_value(unsigned int value)
{
	RCURRENT_REFERENCE_H=value/256;
  	RCURRENT_REFERENCE_L=value%256;
  }
unsigned char display_yesorno(unsigned int addr)
{
if(progfunction_kvarh_f==no)
	{
		if(addr==394)
			return 0;
	}
if(progfunction_kvarh_r==no)
	{
		if(addr==395)
			return 0;
	}
if(progfunction_kvarh_f==no)
	{
		if(addr==353)
			return 0;
	}
if(progfunction_kvarh_r==no)
	{
		if(addr==354)
			return 0;
	}
// changed by zhanglong ---->start
if(130==addr) //25 dot 00
{
	if ((yes==progfunction_kvarh_r)||(yes==progfunction_kvarh_f))
		{
		return 1;
		}
	else
		{
		return 0;
		}
	
}
// changed by zhanglong ---->end
return display_enable[READ_LCD_DISPLAY_DATA_TABLE[addr][12]];
}
// display  point  next
void reference_next()
{unsigned int l,l1;
l=RCURRENT_REFERENCE;
for(l1=0;l1<500;l1++)
 	{
 	 	l=l+1;
 	 	if((l>END_REFERENCE)||(display_yesorno(l)==yes))
         		l1=500;
 	} 
set_reference_value(l);
}
// last 
void reference_last()
{unsigned int l,l1;
 l=RCURRENT_REFERENCE;
 for(l1=0;l1<500;l1++)
 	{
 	 	l=l-1;
 	 	if((l>END_REFERENCE)||(display_yesorno(l)==yes))
         		l1=500;
 	} 
 set_reference_value(l);
}






// 2003-7-5 cuo feng  yuyue add
const unsigned char table_cuofengset_use[][2]=
{
  {0,16},// addr   len
  {16,16},
  {32,3},
  {35,3},
  {38,6},
  {44,6},
  {50,6}};
  const unsigned char tabl_cuofeng_kwhuse[][2]=
  	{
  		{0,4},// addr len
  		{4,4},
  		{0x8,4},
  		{12,4},
  		{16,7},
  		{23,7},
  		{30,7},  		
  		{37,1},
  		{38,7}
  		};
  
 void ram_kwh_to_point_with_ed(addr,point)
unsigned char *point,*addr;
 // cpu block kwh (total,jian feng ping gu)----->total feng ping gu jian +0xed
{unsigned char l;
 unsigned char *frompoint,*topoint;
 for(l=0;l<4;l++)
 {
 	frompoint=addr+l;
	topoint=point+l;
 	*topoint=*frompoint;
   	*(topoint+4)=*(frompoint+8);
   	*(topoint+8)=*(frompoint+12);
   	*(topoint+12)=*(frompoint+16);
    	*(topoint+16)=*(frompoint+4); 
 }
 *(point+20)=0xed;
}
 /*********************************************/
unsigned char gread_cuofengyuyue(unsigned int command)
{unsigned char num,l,l1;
 unsigned int code;
num=0;
code=0xfff&command;
if((0x730<code)&&(code<0x738))
  	{
  		l=code-0x731;
   		num=table_cuofengset_use[l][1];
   		data_addr.addri=FM_MAIN_CUOFENG_START_1+table_cuofengset_use[l][0];
   		read(FM,num);
   	}
else
     	{
     		if((0x170<code)&&(code<0x17a))
            		{
            			l=code-0x171;
               		num=tabl_cuofeng_kwhuse[l][1];
               		data_addr.addri=R_CUOFENG_KWH_F+tabl_cuofeng_kwhuse[l][0];
               		read(RRAM,num);// current kwh
             		}
        	else
        		{
        			if((0x270<code)&&(code<0x27a))
                  			{ 
                  				l=code-0x271;
                    				data_addr.addri=current_twobiaofm_block_addr(TYPE_EP1_CUOFENGKWH_RECORD,0);
                    				if(data_addr.addri!=0xffff)
                    	   				{
                    	   					data_addr.addri=data_addr.addri+tabl_cuofeng_kwhuse[l][0];
                          					num=tabl_cuofeng_kwhuse[l][1];
                          					read(EP1,num);// last month
                    	   				}
        	    			}
                		else
                			{
                				if((0x850<code)&&(code<0x855))
                	    				{// yu yue dong jie
                	    					data_addr.addri=FM_YUYUEDONGJIE_BUFFER+6+20*(code-0x851);
                           					read(FM,20);
                           					for(l=0;l<20;l++)
                           	  					wr_data[50+l]=wr_data[l];
                           					ram_kwh_to_point_with_ed(&wr_data[50],&wr_data[0]);
                           					num=20;
                	     				}
                        			else
                        	 			if(code==0x855)
                        					{
                        						data_addr.addri=FM_YUYUEDONGJIE_BUFFER+6+80;
                        	         				read(FM,16);
                        	         				num=16;
                        					}
                        	  			else
                        	  				if((0x855<code)&&(code<0x859))
                        	  					{
                        	  						data_addr.addri=FM_YUYUEDONGJIE_BUFFER+6+20*(code-0x855);
                        	  	         				read(FM,4);
                        	  	         				num=4;
                        	  					}
                        	  				else
                        	  					if((0x859<code)&&(code<0x85c))
                        	  		    				{
                        	  		    					data_addr.addri=FM_YUYUEDONGJIE_BUFFER+6+80+16+7*(code-0x85a);
                        	  	             					read(FM,7);
                        	  	             					num=7;// kw  
                        	  		     				}
                        	  					else                        	  		
                        	  		    				if(code==0x861)
                        	  							{
                        	  								data_addr.addri=FM_CUOFENG_BUFFER;
                        	  		         					read(FM,16);                        	  		         
                        	                        					num=16;
                        	  							}
                        	  		     				else
                        	  		     	   				if(code==0x862)
                        	  		     	   					{
                        	  		     	   						data_addr.addri=FM_CUOFENG_BUFFER+38;
                        	  		     	         					read(FM,7);
                        	  		     	         					num=7;
                        	  		     	   					}
                        	  		
                					}
                
        			}
    		 }                    	   
return num; 
}


// 2003-7-5 add
void set_cuofengyuyue_envent_before(unsigned char a)
{unsigned char l;
  unsigned int addr;
  if(a!=0)   
  	{// yuyue
  	  	if(1==next_point(TYPE_EP1_BESPOKENPRICE_RECORD,4))
      	   		{

⌨️ 快捷键说明

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