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

📄 global_function.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 5 页
字号:
      	   			addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENPRICE_RECORD,0);
      	    			if(addr!=0xffff)
      	    				{
      	    					data_addr.addri=FM_PRICE_SWITCH;
                				read(FM,6);
                				for(l=6;l>0;l--)
                					wr_data[10+l-1]=wr_data[l-1];
                				time_to_wrdata();
                				for(l=0;l<4;l++)
        						wr_data[l+6]=0;
                				data_addr.addri=addr;
               				 write(EP1,16);
      	    				}
      			}
  	}
}    	    	
       

void set_cuofengyuyue_envent_end(unsigned char a)
{unsigned char l;
  unsigned int addr;
  if(a==0)
    {//cuo feng
    		next_point(TYPE_EP1_BESPOKENCUOFENG_RECORD,4);
    	 	addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENCUOFENG_RECORD,0);
      		if(addr!=0xffff)
      	  		{
      	  			data_addr.addri=FM_MAIN_CUOFENG_START_1;
           			read(FM,56);
           			for(l=0;l<12;l++)
           	 			wr_data[38+l]=wr_data[44+l];
            			for(l=50;l>0;l--)
                			wr_data[10+l-1]=wr_data[l-1];
                		time_to_wrdata();
                		for(l=0;l<4;l++)
        				wr_data[l+6]=0;
           			data_addr.addri=addr;
           			write(EP1,60);
      	    		}
     }  
  else
  		{// yuyue
  	 		addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENPRICE_RECORD,0);
      	 		if(addr!=0xffff)
      	     			{
      	     				data_addr.addri=FM_PRICE_SWITCH;
              			read(FM,6);
              			data_addr.addri=addr+16;
                			write(EP1,6);
      	    			}
      		}
  }
 	    	
            




// l2003-7-7 add
unsigned char come_setdate_yesno_byfm(unsigned int addr)
// yu yue ,cuofeng shi duan switch
{unsigned char time[6],l;
  unsigned int l1,l2;
	data_addr.addri=addr;
	read(FM,5);
	for(l=5;l>0;l--)
		wr_data[l]=wr_data[l-1];
	wr_data[0]=0;// kuo chong--->second
	if(0==testsecond_minute_hour_day_month_year(&wr_data[0],&wr_data[3])) 
		return 0;
	else
     	     {
     		l2=num_day_form_date(&wr_data[3]);
       		l1=num_day_form_date(&RSOFT_RTC_DAY);
       		if(l1>l2) 
				return 1;
       		else
       			if(l1==l2)
       	   			{
       	   				l2=wr_data[1]+256*wr_data[2];
       	     				l1=RSOFT_RTC_MINUTE+256*RSOFT_RTC_HOUR;
       	     				if(l1>=l2) 
							return 1;
       	     				else 
							return 0;
       	    			}
       			else 
					return 0;
       	 
     		}  

}



void gdisplay_auto_key_comm()
	// auto  key display set yes or no
{unsigned int l;
   data_addr.addri=EP1_AUTO_NUM;
   read(EP1,2);
   l=value_hex_from_bcd(wr_data[0])+100*value_hex_from_bcd(wr_data[1]);
   if((l==0)||(l>0x80)) 
		RFLAG_DISPLAY_AUTO_SET=0;
    else 
		RFLAG_DISPLAY_AUTO_SET=1;
    data_addr.addri=EP1_KEY_NUM;
    read(EP1,2);
    l=value_hex_from_bcd(wr_data[0])+100*value_hex_from_bcd(wr_data[1]);
    if((l==0)||(l>0x80)) 
	  	RFLAG_DISPLAY_KEY_SET=0;
      else 
	  	RFLAG_DISPLAY_KEY_SET=1;
}

void move_int_to_fm(value,addr)
unsigned int value,addr;
{
  wr_data[0]=value%256;
  wr_data[1]=value/256;
  data_addr.addri=addr;
  write(FM,2);
}

void shuangxiang_kvarh()// return ----->bcdaddbuffer[0---4]
{unsigned char i;
   data_addr.addri=R_KWH_F_BAKA+40;   // zhen xiang wu gong
   read(RRAM,4);
   bcdaddbuffer[0]=0;
   for(i=0;i<4;i++)
		 bcdaddbuffer[i+1]=wr_data[i];
   data_addr.addri=R_KWH_F_BAKA+60;   // fan xiang wu gong
   read(RRAM,4);
   bcdaddbuffer[5]=0;
   for(i=0;i<4;i++)
		bcdaddbuffer[i+5+1]=wr_data[i];
   byte5_bcdadd_byte5();
  }


unsigned char gmima_function(mima_okerr,mima_denji)
// fei an quan ren zhen
unsigned char mima_okerr,mima_denji;
{unsigned char l,l1,l2;
  unsigned int addr;
  l=mima_okerr;
  l1=mima_denji;
  if(l1<10)
      {
        	addr=R_PASSWORD_LOCK_TIME_0+2*l1;
        	if((RAM[addr]==0)&&(RAM[addr+1]==0))
              	 {
              	 	if(l==0)
                      		{
                      			RAM[R_PASSWORD_LOCK_NUM_0+l1]=RAM[R_PASSWORD_LOCK_NUM_0+l1]+1;  	         
                        			if(RAM[R_PASSWORD_LOCK_NUM_0+l1]>4) 
                 	       			{
                 	       				RAM[R_PASSWORD_LOCK_NUM_0+l1]=0;
              	          				addr=R_PASSWORD_LOCK_TIME_0+2*l1;// time 60*48 lock48 hour
                               			RAM[addr]=0x40;
                               			RAM[addr+1]=0xb;
                               			copy_ram_to_fm(addr,2,addr);
                             			}
                           			data_addr.addri=FM_PASSWORD_LOCK_NUM_0+l1;
                           			wr_data[0]=RAM[R_PASSWORD_LOCK_NUM_0+l1];
                           			write(FM,1);                      
  	            			}
                 		else
        	            		{        	
        	               		for(l2=l1;l2<10;l2++)
			              		{
			              			RAM[R_PASSWORD_LOCK_NUM_0+l2]=0;
        		                			// ram------>fm
        		                 		for(l2=0;l2<10;l2++)
        		                     			wr_data[l2]=RAM[R_PASSWORD_LOCK_NUM_0+l2];
        		                  		data_addr.addri=FM_PASSWORD_LOCK_NUM_0;
        		                  		write(FM,10);
        		                   // x----->9 time=0,
        	                         		addr=R_PASSWORD_LOCK_TIME_0+2*l1;
        	                          		l1=10-l1;
                                        		for(l2=0;l2<2*l1;l2++)
              	                        			RAM[addr+l2]=0;
                                         		copy_ram_to_fm(addr,2*l1,addr);
                                      	}
                              	  }
  	               }
               else 
			   	 l=0;
        }
    
else 
		l=0;
return l;
}
void clr_4_dot()
	// an quan ren zhen chong dian
{
renzhen_imax=0; 
renzhen_ib=0;
renzhen_imax5l=0;
renzhen_ib5l=0;
status_renzhen_use=0;
}


void copyrunstatus()
{
	data_addr.addri=FM_STATUS_RUN;
       wr_data[0]=RSTATUS_RUN;
       write(FM,1);   
}
void g_errmima_function()
	// an quan ren zheng  mima suo ding
{
  RAM[R_SECURITY_LOCK_NUM]=RAM[R_SECURITY_LOCK_NUM]+1; 
  if(RAM[R_SECURITY_LOCK_NUM]>2) 
   	 {
   	 	RAM[R_SECURITY_LOCK_NUM]=0;
   	   	clr_4_dot();
   	    	RSTATUS_RUN=LOCK_DEED;
   	    	copyrunstatus();  
          }
  data_addr.addri=FM_SECURITY_LOCK_NUM;
  wr_data[0]=RAM[R_SECURITY_LOCK_NUM];
  write(FM,1);   	         
}




unsigned char translate_status(status,status_use,continue_time,value,input_status)
unsigned char *status,*status_use,*continue_time,value,input_status;
{
	if(*status_use!=input_status)
		{
			*status_use=input_status;
       			*continue_time=0;			
       		}
	else
		{
        		if(*continue_time<=value)
        			*continue_time=*continue_time+1;
         		if(*continue_time>=value)
         			{
         				*continue_time=0;
              				if(*status!=input_status)
              					{
              						*status=input_status;
								return 1;
              					}
				}
		}
return 0;
}





unsigned char price_fuhe_judge(num,point)
unsigned char num,*point;
// num  num of the price or fuhe 
// point date_addr
{unsigned int y1,y2;
  unsigned char *pointuse;
  unsigned char a,l;
  a=0;
 for(l=0;l<(num-1);l++)
 	{
 		pointuse=point+3*l;
 		y1=256*(*(pointuse+1))+(*(pointuse));
         	y2=256*(*(pointuse+1+3))+(*(pointuse+3));
 	 	if(y1==y2) 
			a=a+2;
 	 	else
 	 		if(y1>y2) 
				a=a+1;
 	}
 if(a==0) 
 	return 1;
 if(a==1)
 	{
 		y1=256*(*(point+1))+(*point);
		pointuse=point+3*(num-1);
         	y2=256*(*(pointuse+1))+(*pointuse);
         	if(y1>y2) 
			return 1;
 	}        
return 0;//err
}
unsigned char set_price_ok(num,point)
unsigned char num,*point;
{unsigned char l,nump,i,i1,n,n0;
  unsigned char *pointuse;

if(num<2) 
	return 1;
nump=num;
n0=0;	
for(i=1;i<nump;i++)
      	{
     		pointuse=point+3*i;
		if(((*(point))==(*pointuse))&&((*(point+1))==(*(pointuse+1))))
			{
				if((*(point+2))!=(*(pointuse+2)))
        	       		return 0;//err
				for(i1=0;i1<i;i1++)
					{
						if((*(point+3*i1+2))>3)
							{
								return 0;//err
							}
					}
				if(i<(nump-1))// if closedloop,next must be zero
					{
						for(i1=(i+1);i1<nump;i1++)
							{
								pointuse=point+3*i1;
								if((0!=(*pointuse))||(0!=(*(pointuse+1)))||(0!=(*(pointuse+2))))
									{
										return 0;
									}
							}
					}
				nump=i;
				n0=1;
			}
	}	         
if(n0==0)// if no closedloop
       {
        // pricevalue must be ok
        	//if empty ,next must be empty
	      	n=0;
	      	for(i=0;i<num;i++)
			{
				if((*(point+3*i+2)>3)&&(n==0))
					{
						n=1;
						nump=i;
					}
				else
					{
						if((*(point+3*i+2)<4)&&(n==1))
							{
								return 0;//err
							}
					}
			}
        	}	
if(nump<2) 
 	return 1;
return price_fuhe_judge(nump,point); 
}
//fu he gai 
//must test
unsigned char set_fuhe_ok(num,point)
unsigned char num,*point;
{unsigned char value,l,a,nump,i,n;
  unsigned int y1,y2;
  unsigned char *pointuse;
value=0;
if(num<1)//l2 
	return 1;
nump=num;
n=0;
for(i=(num-1);i>0;i--)//  judge closedloop
	{
		pointuse=point+3*i;
		if((0==(*(pointuse+2)))&&(0==(*(pointuse+1)))&&(0==(*pointuse)))
			{
				nump--;
			}
		else
			{
				if(((*point)==(*pointuse))&&((*(point+1))==(*(pointuse+1))))
					{
						if((*(point+2))==(*(pointuse+2)))
							{
								nump--;
								break;
							}
						else
							{
								return 0;//value;// =0
							}
					}
				break;
			}
	}
for(i=0;i<nump;i++)//judge date ok
	{
		pointuse=point+3*i;
		if((0==(*(pointuse+2)))&&(0==(*(pointuse+1)))&&(0==*pointuse)&&(nump==1))
			{
				break;
			}
		if((0==testdaymonth(pointuse))||(0==*(pointuse+2))||(*(pointuse+2)>5))
				return 0;//value//=0
				
	}
return price_fuhe_judge(nump,point); 
}


unsigned char thevalueisbcd1to60(unsigned char value)
{
if((1==testbcd(value))&&(value!=0)&&(value<0x61))
       return 1;
else
	return 0;
}
void displayalloroff(unsigned char value)
{unsigned char *dn12,dn11;
  dn12=&lram0;
  for(dn11=0;dn11<24;dn11++)
       {
       	(*dn12)=value;
         	dn12++;
        }
}


unsigned char envent_clr()
	// shi jian qing ling
{unsigned char l;
  unsigned int i;
               showcomm;
	         qingqiuduishi_rtc=1;
                //ram
                for(i=R_LOSTV_NUM;i<R_PROG_NUM;i++)
			RAM[i]=0;
		  for(i=R_ALLLOSTV_NUM;i<R_YONGHUHAO_L;i++)
		  	RAM[i]=0;
		  for(i=R_CUOFENG_KWH_F;i<R_TEMP;i++)
		  	RAM[i]=0;
		   for(i=R_LOSTV_CURRENT_KWH_F;i<R_CURRENT_QUADRANT;i++)
   	              RAM[i]=0;
//		   RFLAG_DEMANGCLR_LOCK=0;
//                 RTIMER_DEMANGCLR_LOCK=0;
		   for(l=0;l<6;l++)
               	RAM[R_CURRENT_KW+l]=0;
		//fm
		   for(l=0;l<200;l++)
		   	wr_data[l]=0;
                  //FM  LOSTV
                 data_addr.addri=FM_LOSTV_NUM;
                write(FM,108);
                data_addr.addri=FM_LOSTV_AB_NUM ;
                write(FM,102);
                watchdog();
		if(1==tingdian_ack())
			return 0;
                //FM  CUTV
                data_addr.addri=FM_CUTV_NUM;
                write(FM,108);
                data_addr.addri=FM_CUTV_AB_NUM;
                write(FM,102);
               if(1==tingdian_ack())
			return 0;
               //GUO ZAI
              data_addr.addri=FM_OVER_KW_NUM;
              write(FM,9);
              data_addr.addri=FM_ALLLOSTV_NUM;
              write(FM,30);
              data_addr.addri=FM_CUOFENG_KWH_F;
	       write(FM,58);
		data_addr.addri=FM_TIMER_DEMANGCLFM_LOCK;
		write(FM,2);
              data_addr.addri=FM_LAST_CUTV_START_DATE;
	       write(FM,12);
		if(1==tingdian_ack())
			return 0;
		data_addr.addri=FM_CUOFENG_BUFFER;
	       write(FM,128);
		if(1==tingdian_ack())
			return 0;
              data_addr.addri=FM_CUOFENG_BUFFER+128;
	       write(FM,128);
		if(1==tingdian_ack())
			return 0;
		for(l=0;l<16;l++)
			{
				watchdog();
		        	 data_addr.addri=FM_LOSTV_RECORD_BLOCKADDR+85*l;
		        	 write(FM,85);
				if(1==tingdian_ack())
					return 0;
			}
		for(l=0;l<8;l++)
			{
				watchdog();
		        	 data_addr.addri=FM_ALLLOSTV_RECORD_BLOCKADDR+112*l;
		         	write(FM,112);
				if(1==tingdian_ack())
					return 0;
			}
		//EP1
		
		for(l=0;l<16;l++)
			{
				watchdog();
		         	data_addr.addri=EP1_BIAOGAI_RECORD_BLOCKADDR+16*l;
		         	write(EP1,16);
			       if(1==tingdian_ack())
					retur

⌨️ 快捷键说明

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