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;
}