void SHT25_soft_reset(){i2c_start(); // Start conditioni2c_write(0x80); // Device addressi2c_write(0xFE); // Device commandi2c_stop(); // Stop condition}unsigned int8 SHT25_setup(unsigned int8 setup_reg ) // writes to status register and returns its value{unsigned int8 reg;i2c_start(); // Start conditioni2c_write(SHT25_ADDR); // Device addressi2c_write(0xE7); // Device commandi2c_start(); // Start conditioni2c_write(SHT25_ADDR+1); // Device addressreg=i2c_read(0); // Read status actual status registerreg = (reg & 0x3A) | setup_reg;i2c_start(); // Start conditioni2c_write(SHT25_ADDR); // Device addressi2c_write(0xE6); // Write to status registeri2c_write(reg); // Device commandi2c_stop(); // Stop conditiondelay_ms(10);i2c_start(); // Start conditioni2c_write(SHT25_ADDR); // Device addressi2c_write(0xE7); // Device commandi2c_start(); // Start conditioni2c_write(SHT25_ADDR+1); // Device addressreg=i2c_read(0); // Read status actual status registerreturn (reg);}float SHT25_get_temp(){unsigned int8 MSB, LSB, Check;unsigned int16 data;i2c_start();I2C_Write(SHT25_ADDR);I2C_write(0xE3);i2c_stop();delay_ms(100);i2c_start();I2C_Write(SHT25_ADDR+1);MSB=i2c_read(1);LSB=i2c_read(1);Check=i2c_read(0);i2c_stop();LSB = LSB >> 2; // trow out status bitsdata = (((unsigned int16) MSB << 8) + (LSB << 4));return(-46.85 + 175.72*((float)data/0xFFFF));}float SHT25_get_hum(){unsigned int8 MSB, LSB, Check;unsigned int16 data;i2c_start(); //RHI2C_Write(SHT25_ADDR);I2C_write(0xE5);delay_ms(100);i2c_start();I2C_Write(SHT25_ADDR+1);MSB=i2c_read(1);LSB=i2c_read(1);Check=i2c_read(0);i2c_stop();LSB = LSB >> 2; // trow out status bitsdata = (((unsigned int16) MSB << 8) + (LSB << 4) );return( -6.0 + 125.0*((float)data/0xFFFF));}