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.
Podem provar la la lectura de la memòria de programa amb l'exemple MP.
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 4 bits superiors al registre EEADRH. 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. La funció següent llegeix l'adreça de la memòria de programa que se li indica com a paràmetre i retorna el valor llegit.
unsigned char llegir_MemProg(unsigned short adre) { // Llegeix el contingut de la memòria de programa // a la posició indicada per l'adreça EEADRH = adre/256; // Part més significativa de l'adreça que volem llegir EEADR = adre%256; // Part menys significativa de l'adreça que volem llegir EECON1bits.EEPGD = 1; // Seleccionem memòria de programa i no EEPROM EECON1bits.RD = 1; // Activa la lectura _delay(5); // Donem temps a fer la lectura return EEDAT; // Llegeix i retorna el resultat }
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.