Hola,
A ver si logro explicarme mejor...
Lo primero recordarte que estos PIC, los 16F87X, tienen un array de memoria dividido en tres zonas:
- zona de memoria de programa FLASH
- zona de memoria EPPROM
- zona de memoria RAM
Estos cacharritos sólo se pueden reprogramar si los bits CP y WRT del registro de configuración están correctamente instanciados. Me explico...
Por un lado debes tener en cuenta los bits CP1 y CP0, que protegen el código de ciertos bloques de la memoria de programa; se pueden seleccionar qué bloques proteger o bien proteger todos.
Por otro lado el bit WRT proporciona mayor control para reprogramar la memoria de programa a través del código de usuario. Sólo si el bit WRT está a 1, podrás cargar tu código en el micro a través del programador. Si WRT=0, la única posibilidad de modificar la memoria de programa es a través de la interfaz externa "in-circuit" ICSP. Pero en este caso, tu código SI podría escribir sobre la EEPROM o sobre la RAM ... ¿lo entiendes?....
Por ejemplo, tú programas el pic con el ICPROG, la primera vez debes poner WRT=1, y ya tienes cargado tu código en la memoria de programa. Funciona y hace lo que tú quieres. Genial. Pero luego resulta que necesitas apuntar a una dirección de la EPPROM y escribir algo en ella, y asegurarte de que tu micro va a seguir funcionando como antes. En ese caso, puedes añadir al código de antes la parte que escribe en la EEPROM y cargarlo con el ICPROG, pero ahora debes poner WRT=0, y así te aseguras que la memoria de programa no se va a alterar.
Espero haberte aclarado..... Ya me dirás.
Un saludo!
Elena.-
