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

📄 global_function.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 5 页
字号:
unsigned int i,j;
{unsigned char l;
if(4==testbcdnum(&RAM[i],2)+testbcdnum(&RAM[j],2))
	{
   		l=compare_1_byte(i+1,j+1);	
   		if(l!=2)   
			return l;
   		else
        		{
        			l=compare_1_byte(i,j);
          			if(l==1) 
					return 1;
          			else
	         			return 0;
			}
   	}
else 
	 return 0;
}
*/
unsigned char compare_3_byte(i,j)
unsigned int i,j;
{unsigned char l;
if(6!=testbcdnum(&RAM[i],3)+testbcdnum(&RAM[j],3))
	return 0;
l=compare_1_byte(i+2,j+2); 
if(l!=2)   
	return l;
else
     	{
     		l=compare_1_byte(i+1,j+1);	
      		if(l!=2)   
			return l;
      		else
           		{
           			l=compare_1_byte(i,j);
             			if(l==1) 
					return 1;
             			else
                  			return 0;
             		}
      	}
 }

// 0<=     1>
unsigned char compare_4_byte(i,j)
unsigned int i,j;
{unsigned char l;
if(8==testbcdnum(&RAM[i],4)+testbcdnum(&RAM[j],4))
    	{
      		l=compare_1_byte(i+3,j+3);
      		if(l!=2)   
			return l;
      		else
           		{
           			l=compare_1_byte(i+2,j+2);
             			if(l!=2)   
					return l;
             			else
                  			{
                  				l=compare_1_byte(i+1,j+1);	
                    				if(l!=2)   
							return l;
                    				else
                         				{
                         					l=compare_1_byte(i,j);
                           					if(l==1) 
									return 1;
                           					else
	                    						return 0;
							}
                     		}
            			}
    		 }
	else
		return 0;
}




// rr求下一个指针AAAA
unsigned char next_point(biao_type,len)
unsigned char biao_type,len;
{
unsigned char value;
value=0;
data_addr.addri=FM_POINT_TWOTABLE+biao_type;
if(1==read(FM,1))
      {
      		if(0==wr_data[0])
       		wr_data[0]=len;// <-------------
       	else
 	     		{
 	     			wr_data[0]=wr_data[0]-1;//<---------------
              		if(wr_data[0]>len)  
					wr_data[0]=len;
			}
		if(1==write(FM,1)) 
			value=1;
 	}
 return value;
}

void time_to_point(unsigned char *point)
{ unsigned char l;
  if(1==testsecond_minute_hour_day_month_year(&RSOFT_RTC_SECOND,&RSOFT_RTC_DAY))
     {
     	 *point=RSOFT_RTC_DAY;
        *(point+1)=RSOFT_RTC_MONTH;
        *(point+2)=RSOFT_RTC_YEAR;
        *(point+3)=RSOFT_RTC_SECOND;
        *(point+4)=RSOFT_RTC_MINUTE;
        *(point+5)=RSOFT_RTC_HOUR;
      }
  else
  		for(l=0;l<6;l++)
  	       	*(point+l)=0;
}
// time--- wr_data
void time_to_wrdata()
{ 
   time_to_point(&wr_data[0]);
}
void time_to_bianchengqian()
{
time_to_point(&bianchengqian[0]);
}

void biancheng_jilu_use(unsigned char a)
{unsigned char l;
  time_to_wrdata();      
  if(a==0)
  	for(l=0;l<4;l++)
       	{
       		if(tongdao==comm485_1) 
				wr_data[l+6]=zhangjihao_485[l];
        	       else
        	        	if(tongdao==comm485_0) 
					wr_data[l+6]=zhangjihao_485_0[l];
        	              else
        		             	wr_data[l+6]=zhangjihao[l];
		}
 else
     	for(l=0;l<4;l++)
      		wr_data[l+6]=0;
}


// bian编程情况AAAAA
void onetime_biancheng(a,b1,b2)
unsigned char a;  // 1 zhang ji   0----zhangji hao 0000
unsigned char b1,b2;  // bian cheng dai ma
 {unsigned char l;
  byte_2_bcd_add(R_PROG_NUM);
  copy_ram_to_fm(R_PROG_NUM,2,R_PROG_NUM);
  if(1==next_point(TYPE_FM_PROGRAM_RECORD,9))
       {// read zhi zhen
        	data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_PROGRAM_RECORD,0);
         	biancheng_jilu_use(a);        
        	wr_data[10]=b2;// b1
        	wr_data[11]=b1;// b2
        	write(FM,12);
	}              
}       

void kwhkvarh_proguse(a,before,now,type)
unsigned char a,type;    // 0 zhang ji  1---00000 quan guo
unsigned char *before,*now;
{unsigned char l;
unsigned int addr;
   if(1==next_point(type,4))
       {// read zhi zhen       
         //set_addr_by_twobiao(TYPE_EP1_KWHPROGRAM_RECORD);
	 	data_addr.addri=current_twobiaofm_block_addr(type,0);
         	addr=data_addr.addri;
         	biancheng_jilu_use(a);        
        	for(l=0;l<40;l++)
        		wr_data[10+l]=*(before+l);
        	for(l=0;l<40;l++)
        		wr_data[50+l]=*(now+l);       
       	write(EP1,30);
		for(l=0;l<30;l++)
			wr_data[l]=wr_data[l+30];
		data_addr.addri=addr+30;
	 	write(EP1,30);
	 	watchdog();
		for(l=0;l<30;l++)
			wr_data[l]=wr_data[l+60];
		data_addr.addri=addr+60;
	 	write(EP1,30);	
	}
}	

// you 有功电量编程情况AAAA
void onetime_kwhp(a,before,now)
unsigned char a;    // 0 zhang ji  1---00000 quan guo
unsigned char *before,*now;
{
kwhkvarh_proguse(a,before,now,TYPE_EP1_KWHPROGRAM_RECORD);  
}
// WU无功电量编程情况AAAA
void onetime_kvarhp(a,before,now)
unsigned char a;    // 0 zhang ji  1---00000 quan guo
unsigned char *before,*now;
{
	kwhkvarh_proguse(a,before,now,TYPE_EP1_KVARHPROGRAM_RECORD);
  
}




void cun_from_currenttime_addri(unsigned char a)
{
	switch(a)
		{
 			case TYPE_EP1_HISTROY_KWH:
			case TYPE_EP1_HISTROY_KWH2:
 			case TYPE_EP1_HISTROY_KWH3:
 	 		// dian liang
               				data_addr.addri=FM_YIZHUANCUN_DIANLIANG;             
               				break; 
  			case TYPE_EP1_HISTROY_KW:
  			case TYPE_EP1_HISTROY_KW2:
  			case TYPE_EP1_HISTROY_KW3:
  	 // xuliang
                				data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;             
                				break;
			/*Start of lzh on 2009-2-26 15:23 山东烟台0902/
 	 		// dian liang
               				data_addr.addri=FM_YIZHUANCUN_DIANLIANG;             
               				break; 
  	 // xuliang
                				data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;             
                				break;
 	 		// dian liang
               				data_addr.addri=FM_YIZHUANCUN_DIANLIANG;             
               				break; 
  	 // xuliang
                				data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;             
                				break;
			/End of lzh on 2009-2-26 15:23 山东烟台0902*/

// case 39:  // cuo feng
			default:
              				 data_addr.addri=FM_CUOFENG_YICUN;
               				break;
		}
}


void time_prog_changecun(unsigned char a)
{
	cun_from_currenttime_addri(a);
 	wr_data[0]=0x24;
 	write(FM,1);
 }



// shijian时间编程情况AAAA
void onetime_timedatep(a,before)
unsigned char a;    // 0 zhang ji  1---00000 quan guo
unsigned char *before;
{unsigned char l;
  if(1==next_point(TYPE_FM_TIMEPROGRAM_RECORD ,4))
       {// read zhi zhen
      		data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_TIMEPROGRAM_RECORD,0);
         	biancheng_jilu_use(a);        
        	for(l=0;l<6;l++)
        		wr_data[10+l]=*(before+l);
        	for(l=0;l<6;l++)
        		wr_data[16+l]=wr_data[l];
         	for(l=0;l<6;l++)
        		wr_data[l]=wr_data[l+10];
        	write(FM,22);
	// zhan cun 
		if((RSOFT_RTC_YEAR!=(*(before+2)))||(RSOFT_RTC_MONTH!=(*(before+1))))
    			{
    				time_prog_changecun(TYPE_EP1_HISTROY_KWH);
      				time_prog_changecun(TYPE_EP1_HISTROY_KW);     
      				time_prog_changecun(TYPE_EP1_CUOFENGKWH_RECORD);
      			}        
    	}
}

/*******************************************************************************/
void set_before(unsigned char set_type)
{unsigned char num,l;
 unsigned int addr;
 num=0;
  switch(set_type)
  	{
  		case TYPE_EP1_PRICEPROGRAM_RECORD:
             				if(current_num_price_prog>4) 
						current_num_price_prog=0;// inside 0----4
             				// 0 tao
              			num=36;
              			addr=R_PRICE_NO1_1+36*current_num_price_prog;
              			break;   
   		case TYPE_EP1_SEASONPROGRAM_RECORD:
   	     // fe he
   	        			num=36;
   	        			addr=R_ONUS_1 ;
   	        			break;
 		case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
 	    // jie jia ri
 	        			num=90;
 	        			addr=R_HOLIDAY1;
 	        			break;
 		case TYPE_FM_WORKOFFPROGRAM_RECORD:
 	    // gong xiu ri shi tao
 	         			num=2;
 	         			addr=R_WORKOFFDAY;
 	         			break;
 		case TYPE_FM_KVARHMODEPROGRAM_RECORD:
 	    // wu gong zu he
 	         			num=4;
 	         			addr=R_KWHMODE_F;
 	         			break;
		case TYPE_FM_CHAOBIAORIPROGRAM_RECORD:
				   // chao biao ri
	         			num=2;   
						addr=R_CHAOBIAORI;
						Set_Chaobiaori_Flag = 0;
	         			break;
		case TYPE_FM_CHAOBIAORIPROGRAM23_RECORD:
	   // chao biao ri
	         			num=2;   
		 				if(Set_Chaobiaori_Flag == 2)
	        				addr=R_CHAOBIAORI2;
						else if(Set_Chaobiaori_Flag == 3)
							addr=R_CHAOBIAORI3;
	         			break;
		default:
			break;
	}
for(l=0;l<num;l++)
      bianchengqian[l]=RAM[addr+l];
 }
      
/*************************************************************/

void set_end(set_type,a)
unsigned char set_type,a;
{unsigned char num,l,lp;
  unsigned int addr,len;
  unsigned int h;
  unsigned char value,type_stor,block;
	value=0;
 	num=0;
  	switch(set_type)
  		{
  			case TYPE_EP1_PRICEPROGRAM_RECORD:
             					if(current_num_price_prog>4) 
							current_num_price_prog=0;//inside 0---------4
             // 0 tao
              				num=36;
              				addr=R_PRICE_NO1_1+36*current_num_price_prog;
			  			value=1;
			  			type_stor=EP1;
			  			block=5;
              				break;   
   			case TYPE_EP1_SEASONPROGRAM_RECORD:
   	     // fe he
   	        				num=36;
   	        				addr=R_ONUS_1 ;
						value=1;
			  			type_stor=EP1;
			  			block=3;
   	        				break;
 			case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
 	    // jie jia ri
 	        				num=90;
 	        				addr=R_HOLIDAY1;
						value=1;
			  			type_stor=EP1;
			  			block=3;
 	       		 		break;
 			case TYPE_FM_WORKOFFPROGRAM_RECORD:
 	    // gong xiu ri shi tao
 	         				num=2;
 	         				addr=R_WORKOFFDAY;
			 			value=1;
			  			type_stor=FM;
			  			block=5;
 	         				break;
 			case TYPE_FM_KVARHMODEPROGRAM_RECORD:
 	    // wu gong zu he
 	         				num=4;
 	         				addr=R_KWHMODE_F;
			 			value=1;
			  			type_stor=FM;
			   			block=5;
 	         				break; 
			case TYPE_FM_CHAOBIAORIPROGRAM_RECORD:
	   // chao biao ri
	         				num=2;
	        				addr=R_CHAOBIAORI;
					 	value=1;
			  			type_stor=FM;
			   			block=5;
	         				break;
			case TYPE_FM_CHAOBIAORIPROGRAM23_RECORD:
	   // chao biao ri
	         				num=2;
		 				if(Set_Chaobiaori_Flag == 2)
	        				addr=R_CHAOBIAORI2;
						else if(Set_Chaobiaori_Flag == 3)
							addr=R_CHAOBIAORI3;
//						Set_Chaobiaori_Flag = 0;
					 	value=1;
			  			type_stor=FM;
			   			block=5;

			default://TYPE_FM_CHAOBIAORIPROGRAM_RECORD
						break;
			}
	if(1==value)
		{
			if(type_stor==FM)
    				{
    					if(1==next_point(set_type,block-1))
          					{
          						data_addr.addri=TABLE_TWO1[set_type].blockaddr;          
             						len=TABLE_TWO1[set_type].lensubblock;
             						data_addr.addri=data_addr.addri+len*wr_data[0]+1;
              					biancheng_jilu_use(a);
              					for(l=0;l<num;l++)
	                 					wr_data[l+10]=bianchengqian[l];
             	 					for(l=0;l<num;l++)
	         						wr_data[l+10+num]=RAM[l+addr];
              					write(FM,10+2*num);
	    					}
     				}
			else
				switch(set_type)
					{
						case TYPE_EP1_PRICEPROGRAM_RECORD:
		                					if(1==next_point(set_type,block-1))
		                						{
		                							 data_addr.addri=TABLE_TWO1[set_type].blockaddr;    
                                     						 len=TABLE_TWO1[set_type].lensubblock;
                                      						 data_addr.addri=data_addr.addri+len*wr_data[0]+1;
						                                     biancheng_jilu_use(a);
										         wr_data[10]=current_num_price_prog+1;///l1---5
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+11]=bianchengqian[l];
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+11+num]=RAM[l+addr];
											 h=data_addr.addri;
										         write(EP1,60);
											 watchdog();
							                             for(l=0;l<23;l++)
								                          wr_data[l]=wr_data[l+60];
							                             data_addr.addri=h+60;
							                             write(EP1,23);
								                	}
									break;						
		  				case TYPE_EP1_SEASONPROGRAM_RECORD:
		  	            					if(1==next_point(set_type,block-1))
		                						{
		                							data_addr.addri=TABLE_TWO1[set_type].blockaddr; 
                                     						len=TABLE_TWO1[set_type].lensubblock;
						                                     data_addr.addri=data_addr.addri+len*wr_data[0]+1;
						                                     biancheng_jilu_use(a);				       
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+10]=bianchengqian[l];
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+10+num]=RAM[l+addr];
											 h=data_addr.addri;
										         write(EP1,60);
											  watchdog();
							                             for(l=0;l<22;l++)
								                          wr_data[l]=wr_data[l+60];
							                             data_addr.addri=h+60;
							                             write(EP1,22);
								                }
									break;
						case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
			          					if(1==next_point(set_type,block-1))
		                						{
		                							data_addr.addri=TABLE_TWO1[set_type].blockaddr; 
                                     						len=TABLE_TWO1[set_type].lensubblock;
                                     		 				data_addr.addri=data_addr.addri+len*wr_data[0]+1;
						                                     biancheng_jilu_use(a);				       
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+10]=bianchengqian[l];
						                                     for(l=0;l<num;l++)
							                                     wr_data[l+10+num]=RAM[l+addr];
											 h=data_addr.addri;
										         write(EP1,60);							                            
							                             for(l=0;l<60;l++)
								                          wr_data[l]=wr_data[l+60];
							                             data_addr.addri=h+60;
							                             write(EP1,60);																
											 for(l=0;l<60;l++)
								                          wr_data[l]=wr_data[l+120];
											 data_addr.addri=h+120;
							                             write(EP1,60);											
											watchdog();
											for(l=0;l<10;l++)
								                          wr_data[l]=wr_data[l+180];
											data_addr.addri=h+180;
							                            write(EP1,10);

⌨️ 快捷键说明

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