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

📄 1-wire_search.c

📁 本文介绍了一种电子密码锁的ds2401的实现源码和文档。该电子密码锁采用1一wire总线芯片.
💻 C
字号:
#define   TRUE    1;
#define   FALSE   0;

unsigned char id_bit;
unsigned char cmp_id_bit;

unsigned char *id_bit_number;

bit LastDeviceFlag;

bit LastDiscrepancy;
bit LastFamilyDiscrepancy;

unsigned char last_zero;

unsigned char ROM_NO[64];

bit search_direction;

bit search_1_wire(){

      
      bit flag;

      LastDeviceFlag=0;

      flag=bus_reset();

	  if(flag==0){

	        if(LastDeviceFlag==0)

			       id_bit_number=ROM_NO;
                   last_zero=0;
			 
				   send_matchRom(0x0f);

                   for(;id_bit_number<=ROM_NO+63;id_bit_number++){

				          id_bit=read_bit();
                          cmp_id_bit=~id_bit+1;

				          if((id_bit!=1)||(cmp_id_bit!=1)){

				                 if((id_bit==0)&&(cmp_id_bit==0))

								         if(id_bit_number!=LastDiscrepancy)
										  
										         if(id_bit_number>LastDiscrepancy)
												         search_direction=0;
                                                 else
												         search_direction=*id_bit_number;										          
										 else 
		  							              search_direction=1; 
 							     else
								         search_direction=id_bit;

								 if(search_direction==0){

								         last_zero=id_bit_number;

										 if(last_zero<9)
										         LastFamilyDiscrepancy=last_zero;
								 }
						  }
						  *id_bit_number=search_direction;

						 write_bit(id_bit_number);
				  }
                  LastDiscrepancy=last_zero;

				  if(LastDiscrepancy==0)
				          LastDeviceFlag=1;

				  if(LastDiscrepancy==LastFamilyDiscrepancy)
				          LastFamilyDiscrepancy=0;

				  return TRUE;
            }

	  else  {
	        LastDiscrepancy=0;
		    LastFamilyDiscrepancy=0;
            LastDeviceFlag=0;

			return FALSE;
      }
}



						         

	            

⌨️ 快捷键说明

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