I just wrote a comprehensive reply pointing out all of your errors. After some re-reading and some researched, I've determined that there were no errors, and everything you said was actually correct. I must say I was surprised by the "9th bit is used as A0" trick on the EEPROM, but there it is in the datasheet. So, instead, I have the following recommendations. Write a loop that tries all the addresses from 0x10 to 0xEE, and break if one acknowledges. This is far quicker than figuring out what the chip's real address is. And it's a test you can use any time there's new i2c hardware. And once you get an ACK it's usually easy to explain why it's at that address. Check that SDA and SCL aren't swapped (check the wiring). Also halt the program before i2c_start(), and see if both lines are high. You can do thi= s with a voltmeter. Naturally, it's best to have a 'scope, but the preceedin= g can be done without one. --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .