Так я не понял задержка или ожидание RDY посде обнуления EELD есть или нет ?
Вот как работает ваша первоначальная программа
EECON=EECON|EEMEN_; // Разрешаем работу с EEPROM
EECON=EECON|EEMWE_; // Разрешаем запись в EEPROM
EECON=EECON|EELD_; // Запись страничная по 4 байта
*Var_w=*Data_w;
while (!(EECON & RDY_)) // ТУТ ЖДАТЬ НЕ НАДО
{}
EECON=EECON&!EELD_; // Выключаем запись страницы
В ЭТОМ МЕТСЕ СТАРТУЕТ ЗАПИСЬ, И НАДО ЖДАТЬ RDY
EECON=EECON&!EEMWE_; // Выключаем запись EEPROM
EECON=EECON&!EEMEN_; // Запрещаем работу с памятью
EECON=EECON|EEMEN_; // Разрешение работы с памятью
EECON=EECON|EELD_; // Разрешение чтения
ВРЕМЯ ПОСЛЕ НАЧАЛА ЗАПИСИ НЕСКОЛЬЕО МИКРОСЕКУНД
Cfc1=Cfc_e; // Чтение
А ЗАПИСЬ ТО ЕЩЕ НЕ ОКОНЧЕНА!!!!! НАДО БЫЛО ПОДОЖДАТЬ
А потом вы подключаете программатор(прошло много времени и запись уже закончилась) и все нормально считывается