Este pic tiene "Flash Program Memory with self read/write capability", según lo que he entendido es un sustitutivo de las EEPROM a la hora de poder guardar información y que si el chip sufre algún corte en la alimentación, cuando se vuelva a alimentar se pueden recuperar los datos grabados antes de sufrir el corte.
No deberías de usar la flash para esos menesteres, ten en cuenta que tiene un ciclo de vida muy corto, tan solo 1000 ciclos de borrado/escritura, luego el chip se queda inservible. Si necesitas un PIC con eeprom, tienes muchos para elegir de 8 bits. Los que trabajamos con PIC32, no tenemos esa suerte, ninguno tiene eeprom, aún así no debe de usarse nunca la flash para simular una eeprom, salvo que el programa grabe datos muy de vez en cuando, como puede ocurrir en un bootloader cuando se utiliza para facilitar actualizaciones de firmware en un producto comercial.
He estado leyendo el datasheet pero no me entero muy bien de como funciona la programación de las funciones de lectura/escritura de la memoria flash.
Llevo un par de semanas buscando por todos lados algún ejemplo sencillo con el que poder experimentar y enseñarme a utilizar esta capacidad, pero no he encontrado nada.
También he buscado por este foro pero tampoco he visto nada.
Si alguien sabe de algún ejemplo, si es posible XC8 o en ensamblador, se lo agradecería mucho.
Ejemplos en C, será dificil que encuentres, porque hasta la aparición de la serie XC de compiladores, Microchip no ofrecía ningún compilador en C para micros de 8 bits, puede que localices algo de Mikroe pero con sus librerias y compilador.
En ensamblador si que hay cosas, bájate las notas aplicativas AN851 y AN1310 y sus correspondientes fuentes, ahí tienes unos bootloader para PIC16 y PIC18, el fuente está en ensamblador, pero puedes ver como se borra y graba la flash.
El proceso consiste básicamente, en borrar la flash antes de grabarla, imprescindible para poder grabar, el borrado se tiene que hacer por páginas, no puedes borrar una sola direccion, en PIC32 el tamaño de una página es de 4096 bytes, supongo que con los 8 bits será de 1K o menos. Luego ya puedes grabar en la flash. Las rutinas en los fuentes de las notas AN851 y AN1310 están muy bien documentadas, no te costará nada extraer las rutinas de programa que borran y graban la flash.
Yo no perdería el tiempo con esto, salvo que quieras hacer un bootloader, si quieres eeprom para almacenar datos de manera permanente, elige otro PIC, tienes un montón con eeprom desde 64 hasta 256 bytes, y si necesitas más almacenamiento usa una eeprom externa por I2C o una tarjeta SD por SPI.