When accessing the program memory block of the
PIC16F886/PIC16F887 devices, the EEDAT and
EEDATH registers form a 2-byte word that holds the
14-bit data for read/write, and the EEADR and
EEADRH registers form a 2-byte word that holds the
12-bit address of the EEPROM location being read.
The EEPROM data memory allows byte read and write.
A byte write automatically erases the location and
writes the new data (erase before write).
The write time is controlled by an on-chip timer. The
write/erase voltages are generated by an on-chip
charge pump rated to operate over the voltage range of
the device for byte or word operations.
EECON1 is the control register for EE memory
accesses.
Control bit EEPGD determines if the access will be a program
or data memory access. When clear, as it is when
reset, any subsequent operations will operate on the data
memory. When set, any subsequent operations will operate
on the program memory. Program memory can only
be read.