En el nostre programa, a més de la memòria de dades i la memòria EEPROM, també podem fer servir la memòria de programa per guardar dades. A la memòria de programa no hi podrem escriure des del microcontrolador, per tant només és útil per aquells valors constants que sempre són els mateixos. La memòria de programa conserva el seu contingut quan es perd l'alimentació elèctrica.
La forma de lectura de la memòria de programa és mitjançant un adreçament indirecte gestionat per uns bits de control.
Per llegir el contingut d'una adreça de la memòria de programa cal posar els 8 bits inferiors de l'adreça al registre EEADR i els 5 bits superiors al registre EEADR. Després cal activar el bit EEPGD per indicar que treballem amb la memòria de programa i activar el bit RD per demanar que es faci la lectura. Un cop activat RD cal esperar dos cicles de programa i després el contingut demanat estarà a EEDAT (els 8 bits inferiors) i a EEDATH (els 6 superiors), d'on el podrem copiar. El programa següent llegeix l'adreça de la memòria de programa etiquetada com Adre i deixa la lectura en dues variables. 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 HIGH Adre ; Llegim l'adreça de la variable movwf EEADRH ; Adreça EEPROM movlw LOW Adre ; Llegim l'adreça de la variable movwf EEADR ; Adreça EEPROM bsf RP0 ; Tria el banc 3 bsf EEPGD ; Accés a memòria de programa bsf RD ; Lectura nop nop ; espera dos cicles bcf RP0 ; Tria el banc 2 movf EEDAT,w ; Llegim bcf RP1 ; Tria el banc 0 movwf ValorBaix bsf RP1 ; Tria el banc 2 movf EEDATH,w ; Llegim bcf RP1 ; Tria el banc 0 movwf ValorAlt ...

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