📄 1-wire_search.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 + -