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

📄 init_sys.c

📁 c8051f020实现4个 产UART 口
💻 C
📖 第 1 页 / 共 2 页
字号:

/******************************************************************
;       提供50ms延时子程序
;       函数原型: void wait_50ms(void)
*******************************************************************/
void Wait_50ms(void)
{
        os_wait2(K_TMO, 25);
}

//如是第一次上电则初始化EEPROM
// ttt 为1 时正常初始化,0时强行恢复出厂数据
void  FLASH_INIT(uchar ttt )   {
        uchar *Poitc;
	 uchar *Poitt11;
         uchar *Poitt22;
         xdata uint mmk;
	  uchar Summ,timee;

	  
Looppp0:
		timee=0;
              // read_fm_memory(0,iic_data_buf,12);
                    while (1) {    // wait for EEProm is free
								      if (EETask == 0xff) break;
								      os_wait2(K_TMO, 2);
		      }
		      EECmd = FM_MEMORY_RD;						     
		      FM_addr=0;
		      FM_num=12;
		  
		      EETask = os_running_task_id();
		      os_send_signal(FMROM);
		      os_wait2(K_SIG, 0);
		      EETask = 0xff;   //EEProm read =================sample
			   
                if(iic_data_buf[8]!= MM0xa5||ttt==0)  {    
				Nessst44888:	
				   Poitt11=(uchar *)&Para_all_True.Apn[0];
				   Clr_MeM(Poitt11,(sizeof(Para_all_True)));
				   
				  Poitt11=(uchar *)&Para_all_True.Apn[0];
				   Poitt22=(uchar *)&struct_Para_all_IniteValue.Apn[0];
				   for(mmk=0;mmk<sizeof(Para_all_True);mmk++)  {
				                  *Poitt11++= *Poitt22++;              
				   }

				   
				//清除所有报警 记录
				  Clr_BaoJingJiLu_All() ;
				
				  
                 }
		   else {
		   	Nessst:
                             Poitc=&Para_all_True.Apn[0];
				 //read_fm_memory(0,Poitc,128);
				     while (1) {    // wait for EEProm is free
								      if (EETask == 0xff) break;
								      os_wait2(K_TMO, 2);
					  }
				      EECmd = FM_MEMORY_RD;						     
				      FM_addr=0;
				      FM_num=253;
				  
				      EETask = os_running_task_id();
				      os_send_signal(FMROM);
				      os_wait2(K_SIG, 0);
					  
                                   Summ=0;
					 for(mmk=0;mmk<252;mmk++)
					  	 Summ+=iic_data_buf[mmk]; 
					 
					if(Summ!= iic_data_buf[mmk])  {
						  if(++ timee>9)  {
						  	          EETask = 0xff;   //EEProm read =================sample
				 
                                                          goto Nessst44888;    //连续记取6次不成功则恢复出厂设置
						  }
						  else  {
                                                           EETask = 0xff;   //EEProm read =================sample
				 
							          goto Nessst;
						  	}
					}

					  
				      EETask = 0xff;   //EEProm read =================sample
				      for(mmk=0;mmk<253;mmk++)
					  	 *Poitc++=iic_data_buf[mmk];
				

				 
                         //**说    明:   读报警记录到内存
                      #if (Is_JiLuRecIn2416 == 1 )  
                           Read_BaoJingJiLu_To_CpuRam() ;
                      #endif   

		   }
		   if(Is_Para_all_True_OK()==0)   //读出数据不对时,重复
		   	      goto Looppp0;
		    MoveByte((uchar *)&Para_all_True_Bak, (uchar *)&Para_all_True, sizeof(Para_all_True));
		    Para_all_True_Bak.Change_Flag=0;
		    Add_CSSUM();	
			
  }





/**********************************************************************
**函数原型:   void Rf_2262() 
**入口参数:   
**出口参数:   无
**返 回 值:   无
**说    明:  Rf2262子程序INIT
************************************************************************/
 //         250us

uchar RF_sta=0;
uchar Low_Cnt=0;	
uchar High_Cnt=0;	
uchar WeiShu=0;

uint Hlcnt=0;
uint Hlcntshu[26],jji,mmkh;

#define   LOWV    1
#define   HIGHV   3

 uchar ppp2;

uchar hhh[40],loww[40],ill;
void Rf_2262()   {
		
		switch(RF_sta)  {
                      case 0:
					  WeiShu=0;	  	//接收到的位数复位  
					  ppp2=P2;
	                    if(RF315_in_P==0)  {
	                           RF_sta=1;
						       High_Cnt=1;				
					  }
			break;

			 
			case 1:   //检测高电平
	                              if(RF315_in_P==0)  { // if high
	                                 
						  High_Cnt++;	
						 
						  
					  }
					  else {
					  	    RF_sta=2;
	                                      Low_Cnt=1;
					  }			  
			break;
                      case 2: //检测低电平
	                                  if(RF315_in_P==1)  {  //if  di
			                                   
								  Low_Cnt++;
								 if( Low_Cnt>25)   {
									 	     EA=0;
										     Hlcnt=0;
										     while(RF315_in_P==1)  {   //di
                                                                                          if(++Hlcnt>880)  {
														    	  EA=1;	    RF_sta=0;
																  return;							  	

													}
													jji=10;
													
										     }

											mmkh=Hlcnt;		 
										    jji=0;
										     while(1)  {			 
													Hlcnt=0;
												     while(RF315_in_P==0)  {   //gao
		                                                                                          if(++Hlcnt>6000)  {
																		  	  EA=1;  RF_sta=0;
																  return;								  	

															}
															
												     }
													 Hlcntshu[jji++]=	  Hlcnt;
													 if((Hlcnt>300&&Hlcnt<410)||Hlcnt<60||Hlcnt>690){
  																  EA=1;	  RF_sta=0;
																  return;		
													 }


														
												     Hlcnt=0;
												     while(RF315_in_P==1)  {  //di
		                                                                                          if(++Hlcnt>6000)  {
																   EA=1;    RF_sta=0;
																  return;								  	

															}
																
												     }
													  Hlcntshu[jji++]=	  Hlcnt;
													  if((Hlcnt>300&&Hlcnt<410)||Hlcnt<60||Hlcnt>690){
  																  EA=1;	    RF_sta=0;
																  return;		
													 }


													  if(jji>=24)  {
													  	       for(jji=0;jji<24;jji++)  {
																		 XinRf315_Value[0]<<=1; 
                                                                       if( Hlcntshu[jji]<300) {  
																		      	  XinRf315_Value[0]|=1; 
																			 
																	   }
																	  else {
																		  	XinRf315_Value[0]&=(  (unsigned long)(~1)  );  
																		
																	  }
															 }
															 
															 if(XinRf315_B==0) {	
														        	   XinRf315_B=1;
																	    RF_sta=0;
															        XinRf315_Value[1]=XinRf315_Value[0];
															 }
	                                                                                                  jji=1;
															break;								  
													  }
										     	}
								 } 
                                                         EA=1;
								
						 }
					     else {
						 	     RF_sta=0;
						  
					  }			  
			break;
                   
            default:
                         RF_sta=0;
			break;

	}
          
    
}


/*
{
		
		switch(RF_sta)  {
                      case 0:
					  WeiShu=0;	  	//接收到的位数复位  
					  ppp2=P2;
	                    if(RF315_in_P==0)  {
	                           RF_sta=1;
						       High_Cnt=1;				
					  }
			break;

			 
			case 1:   //检测高电平
	                              if(RF315_in_P==0)  { // if high
	                                 
						  High_Cnt++;	
						 
						  
					  }
					  else {
					  	    RF_sta=2;
	                                      Low_Cnt=1;
					  }			  
			break;
                      case 2: //检测低电平
	                       if(RF315_in_P==1)  {  //if  di
			                                   
								  Low_Cnt++;

								  if(WeiShu>=24)   {                                                                     
		                                                        if( High_Cnt==LOWV&&Low_Cnt>=(8*LOWV) )  {
															//		 if( High_Cnt==LOWV&&High_Cnt==(LOWV-1)&&Low_Cnt>=(8*LOWV) )  {
												//在这里接收到一帧数据

⌨️ 快捷键说明

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