Pues nada, esto me da que no tiene nada que ver con el código, esto es del MPLABX ya que con XC8 se comporta perfectamente como el antiguo MPLAB IDE con el C18, de todas maneras pongo la función que he desarrollado, es para leer una eeprom 24lc256( nada del otro mundo)
void Sw_24lc256_ReadBuffer(unsigned char Address_EEp, unsigned int Address_Bank, unsigned char *BufferData, unsigned char wLeng)
{
Clock_test();
SWStartI2C();
SWWriteI2C(Address_EEp <<1 & (0xFE)); //Dirección del esclavo modo grabar con el bit 0 de escritura
SWAckI2C();
SWWriteI2C(Address_Bank >> 8); //Dirección del byte mas alto
SWAckI2C();
SWWriteI2C(Address_Bank & 0x00FF); //Dirección del byte mas bajo
SWAckI2C();
SWRestartI2C(); //Restar
SWWriteI2C(Address_EEp <<1 | 0x01); //Dirección del esclavo con el bit a 1 en modo leer
SWAckI2C();
SWGetsI2C(BufferData, wLeng); //Leer string desde la Eeprom exrterna
SWNotAckI2C();
SWStopI2C(); // Envío de la condición de STOP
}