Quote Originally Posted by crhomberg View Post
[I am using a 16F877A at 20MHz

I use timer1 to check the dip switch settings for the device's address and the UASRT one for data in.

Sorry for using attachment, my code was too long for the forum page
Isolate the problem...
Start with a program without any serial input or output, no nothing, just a couple of LEDs and maybe a button or two.
Write and Read the EEPROM and make the LEDs show you if the write/read works correctly or not, use the buttons to increment the addresses and data to be written.
Something tells me that something else in your program isn't working right in the first place, making you think that the EEPROM isn't being written correctly...
Maybe PBP work for you...not the other way around...