uint8_t w1_crc=0; uint8_t w1_byte_wr( uint8_t b ) { uint8_t i = 8, j, c; do{ j = w1_bit_io( b & 1 ); b >>= 1; c = (w1_crc ^ j) & 0x01; w1_crc >>=1; if (c){ w1_crc ^= 0x8c; } if( j ) b |= 0x80; }while( --i ); return b; }