pablormr vamos por partes. Antes que nada, te es dificulta la lectura de datasheets en inglés? Te digo porque en realidad todos estos temas estan explicados por Microchip pero en inglés y son una buena fuente de consulta.
De todas formas pasaré a explicarte, espero aclararte un poco el panorama.
Estoy comenzando en la programación de pic's, y a ver si alguien me echa una mano (caridad) y me ayuda con una explicadita de como funciona (con detalles) el registro PC, porque estoy confundido... la cosa es así: tengo entendido que el registro PC es igual a PCLATH + PCL, ok, hasta ahí estamos claros, lo que luego no entiendo es eso de que en la parte baja del registro PC, es decir, en los primeros 8 bits <7:0> (PCL) se cargan las instrucciones goto y call y todas las demas, las 33 instrucciones que existen... pero las instrucciones no miden 14 bits, la pila de la memoria flash no es de 14 bits?...
Las instrucciones tienen todas 14 bits, eso es así con 100% de seguridad.
Si te fijas en el datasheet verás que la instrucción CALL y GOTO ocupan 14 bits. 3 bits son para la instrucción y 11 para modificar al PC (en sus 11 bits inferiores).
El PC en los pics 16F tiene 13bits. Entonces 11 bits se toman de la instrucción CALL o GOTO y los otros 2 se toman del seteo que hayas hecho del PCLATH.
Te adjunto imágenes del datasheet donde puedes observar esta información.
yo creo que los 8 bits de PCL son para ir aumentando de uno en uno cada vez que se pase de una instrucción a otra.. pero ya luego cuando me hablan que con el comando call y goto se altera el PCL, qué quiere decir eso?
El PCL se modifica solo a medida que se van ejecutando las instrucciones, sino nunca avanzaría. Además el CALL y el GOTO como son 'saltos' obviamente modifican el PCL para que el pic en la próxima instrucción esté ejecutandose en la dirección destino y no donde venía haciendolo.
Además también puedes modificar el PCL y el PCLATH si es que quieres hacer algún salto 'manual'.
Te invito a que veas estos ejemplos
Ejemplos de lectura de tabla para PIC16F84AEjemplos de lectura de tabla para PIC16F628AEjemplos de lectura de tabla para PIC16F876Supongo que el PCLATH es para cambiar de banco de memoria RAM cuando los pic's trabajan, pero esto tengo entendido que se usa cuando los bancos van desde 0 a 3, y cuando sól ovan de 0 a 1 se coloca un cero o un uno en el RP0 del registro de Estado (Status)...[/size]
El PCLATH es un registro que apunta al Program Counter el cual hace referencia a la
Memoria DE PROGRAMA no RAM! cuidado con eso!!.
Los bits STATUS,RP0 y STATUS,RP1 sí son para elegir el banco de memoria RAM.
Espero se te haya aclarado algo.
PD: El código que envíaste no tiene mayor sentido lógico. cuando releas del tema vuelve a postear si quieres pero fíjate de tener más en claro el tema de memoria de programa y memoria ram