Y sobre el tema anterior de la ampliación de memoria de programa del pic16f84, es algo que a mi entender va en contra de la finalidad de esta familia, pero pensando en como se podría hacer, pues se me ocurren dos posibilidades, (pero antes de todo quedaría descartado el uso de memoria paralelo ya que consumiría todos los recurso I/O de este pic)
por supuesto utilizando memoria serie, para ahorrar en pin I/O, nos encontraríamos con el primer problema, que es la baja velocidad de esta memoria.
1º caso
como ampliación de memoria:
se necesitaría programar la memoria de programa del pic con un programa que interprete los comandos y datos asociados a ellos, que estén alojados en la memoria serie, con lo que a la longitud de la rutina de comunicación con la memoria externa abría que añadir también el programa que interpreta los comandos alojados en la memoria serie, esto nos daría un sistema de proceso por interpretación de comandos externos, que haría el programa de la flash muy largo ya que necesitaríamos un núcleo que interpretará los comandos externos con toda su estructura asociada, mas comandos distintos mas grande el programa de la flash…, y otra gran pega seria la perdida de velocidad del programa ya no por la lentitud de la memoria serie, sino por la lentitud de tener que utilizar un lenguaje interpretado.
2º caso
programación de la memoria flash con un programa alojado en una memoria serie externa:
en este caso no le encuentro sentido ya que el PIC se puede programar vía serie en placa, pero bueno, en teoría se podría grabar un programa en la memoria serie y mediante un programita residente en el PIC, cada vez que se haga un reset este programita se activaría y leería la memoria externa e iría grabando el programa en la memoria flash del PIC y luego pasaría el control a este nuevo programa alojado en otra parte de la memoria de programa, esto se puede hacer con algunos PIC de la familia 16F, pero desconozco si este PIC en concreto lo permitirá… se podría modificar en la memoria externa un dato para indicar al programita residente que el programa ya fue actualizado para así no repetir la operación cada vez que se hace un reset…
y fin.