Que tal amigo, si no es muy tarde y te sirve.
Yo implemente este código con el sensor de temperatura MLX90614 de Melexis que mide temperaturas de entre -70 a +380 Cº sin contacto.
#include <18F4550.h>
#fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,NOPROTECT,NOSTVREN,NOCPB,NOWRT,NOWRTC
#use delay (clock=48000000)
#use rs232(baud=115200, xmit=PIN_C6,rcv=PIN_C7)
#use I2C(master,sda=PIN_B0, scl=PIN_B1)
//#use i2c (master, sda=PIN_B0, scl=PIN_B1, slow, force_hw) //habilitación y configuración de las funciones I2C por hardware
int8 resultado1=0;
int8 resultado2=0;
int8 CRC=0;
int16 tempk=0;
float tempc=0.0;
void main (void)
{
while (TRUE)
{
output_toggle(pin_B4);
i2c_start();
if (i2c_write(0xB4)==0) // direccion del sensor para mandar comando
{
i2c_write(0x07); // pido datos del sensor
i2c_start();
i2c_write(0xB5); // direccion del sensor para leer
resultado1 = i2c_read(1);
resultado2 = i2c_read(1);
tempk= make16(resultado2,resultado1);
CRC = i2c_read(0);
}
i2c_stop();
tempc=(tempk*0.02)-273;
printf("temp:%3.2f\n\r",tempc); delay_ms(500);
}
}