I think the SSP Mode Select bits are setup incorrectly in the McFarlam's Picdem 2 + demo code. These are bits 3-0 in SSPCON1.
#ifdef _PIC16
sspcon = 00101000b; // 16F877 has the same register, it's just labelled differently.
#else
sspcon1 = 00101001b; // Enable the serial port and configures the SDA and SCL pins as the serial port pins
#endif // I2C Master mode, clock = FOSC/(4 * (SSPADD + 1)), clock polarity == 0.
According to the comments on the last line in the above code, the first 4 bits of sspcon1 should be 1000 and not 1001. Indeed, the temperature senso