En el nostre programa, a més de la memòria de dades, també podem fer servir la memòria EEPROM per guardar dades. La memòria EEPROM conserva el seu contingut quan es perd l'alimentació elèctrica; per tant és útil per guardar aquelles dades que no interessa que es perdin encara que el programa torni a començar. A la memòria EEPROM hi podem guardar valors en el moment de programar, per tant també és útil per aquells valors constants que sempre són els mateixos.
La forma de lectura i escriptura de la memòria EEPROM és mitjançant un adreçament indirecte gestionat per uns bits de control.
A l'exemple EE guardem dades a la memòria EEPROM en el moment de programar i després les llegim des del programa. Podem provar la la lectura i l'escriptura de l'EEPROM amb l'exemple ME.
Cal tenir present que la memòria EEPROM pot ser esborrada, si ho desitgem, en el moment de programar. Si fem servir el programador PICkit 2, cal tenir marcada la casella Preserve device EEPROM si no volem que a l'enviar un nou programa s'esborrin les dades que tenim guardades.

Si emprem el programador PICkit 3, cal anar al menú Memories to Program, en el desplegable triar Manually select memories and ranges i deixar sense marcar la casella EEPROM si no volem que a l'enviar un nou programa s'esborrin les dades.

Per llegir el contingut d'una adreça de la memòria EEPROM cal posar l'adreça al registre EEADR, desactivar el bit EEPGD per indicar que treballem amb EEPROM i activar el bit RD per demanar que es faci la lectura. Un cop activat RD, el valor demanat estarà a EEDAT, d'on el podrem copiar. El tros de programa següent llegeix l'adreça de la memòria EEPROM etiquetada com Adre i deixa el valor a W. S'ha suposat que en començar està actiu el banc 0 que és el que queda actiu en acabar.
... bsf RP1 ; Tria el banc 2 movlw Adre ; Llegim l'adreça de la variable movwf EEADR ; Adreça EEPROM bsf RP0 ; Tria el banc 3 bcf EEPGD ; Accés a EEPROM bsf RD ; Lectura bcf RP0 ; Tria el banc 2 movf EEDAT,w ; Llegim bcf RP1 ; Tria el banc 0 ...
Quan escrivim a la memòria EEPROM hem de seguir un procés similar al de la lectura però una mica més llarg. La primera consideració és que si aparegués una interrupció a mig procés d'escriptura el resultat podria ser greu; per tant cal desactivar les interrupcions i comprovar que el bit GIE s'ha desactivat. Durant el procés d'escriptura cal escriure uns valors a l'adreça EECON2 per activar el procés. El tros de programa següent escriu el valor que hi ha a l'acumulador a l'adreça de la memòria EEPROM etiquetada com Adre. Si s'ha d'escriure més d'un byte, cal repetir cada vegada el procés. S'ha suposat que en començar està actiu el banc 0 que és el que queda actiu en acabar.
... bsf RP1 ; Tria el banc 2 movwf EEDAT ; Guarda el valor de l'acumulador al registre EEDAT movlw Adre ; Llegim l'adreça de la variable movwf EEADR ; Adreça EEPROM bsf RP0 ; Tria el banc 3 bcf EEPGD ; Accés a EEPROM bsf WREN ; Activa la possibilitat d'escriptura bcf GIE ; Desactiva les interrupcions btfsc GIE ; Comprova si el bit s'ha desactivat goto $-2 movlw 0x55 ; Valor necessari movwf EECON2 ; Escriu 55h movlw 0xAA ; Valor necessari movwf EECON2 ; Escriu AAh bsf WR ; Inicia l'escriptura btfsc WR ; Ha acabat l'escriptura? goto $-1 ; No, doncs esperem bsf GIE ; Torna a activar les interrupcions bcf WREN ; Desactiva la possibilitat d'escriptura bcf RP0 bcf RP1 ; Tria el banc 0 ...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.