No puedo leer ni escribir en el registro PCLATH PIC16F648A

#1
Colegas, un cordial saludo .

Siempre he leído, rebuscado y armando rompecabezas para solucionar los problemas que se me presentan, pero esta vez, tengo la necesidad de escribirles para pedirles humildemente ayuda con el siguiente caso.

Aquí va...

Desarrollo un programa en el PIC16F648A que ocupa aproximadamente 4K de memoria de programa. Según datasheet y a todo lo que he consultado, las instrucciones del tipo CALL o GOTO ponen 11 bits en el Contador de Programa (PC) y el registro PCLATH < 3:4 > agrega al PC los 2 bits restantes para completar los 13 bits de direccionamiento. Estos dos últimos bits deben modificarse manualmente antes de cada salto de página (cada 2K).

Tengo dos problemas:

1. Cuando aparentemente escribo "1" en el bit 3 del PCLATH para ir desde la página 0 a la 1 (> 0x800), y a continuación leo el PCLATH, siempre me muestra "0".

Lenguaje PIC BASIC PRO (disculpen, es el que manejo):

PCLATH.3=1 ; Escribe 1 el bit 3 del PCLATH
PCLATH=%00001000 ; Escribe 1 el bit 3 del PCLATH
LCDOUT $FE,1, BIN PCLATH ; Muestra el valor binario cargado en el registro PCLATH (siempre aparece en "0")

2.El programa de casi un peso de 4K se ejecuta "aparentemente" bien sin necesidad de modificar el PCLATH. Intentando verificar puedo leer el PCL (8 bits), pero como el resultado de leer el PCLATH es siempre "0", no puedo verificar el PC completo (13 bits) y por lo tanto, no puedo saber si el PC se está direccionando correctamente.
Frente a este comportamiento, me surgen las siguientes dudas: ¿Es posible que el PIC16F648A no requiera modificar el PCLATH para que salte sin problemas entre páginas? y si es necesario modificar el PCLATH, por qué mi programa se ejecuta normalmente sin tocar este registro? Será posible que este PIC no tenga páginas de 2K sino un solo bloque de 4K?


Ojalá alguno de ustedes tenga la respuesta o me pueda dar más pistas ya que sigo en el limbo (y muchos conocen la sensación, que a veces no te deja dormir... ). Gracias de antemano
 
#2
¿Es posible que el PIC16F648A no requiera modificar el PCLATH para que salte sin problemas entre páginas?
Debe ser porque el compilador se encarga de direccionar las páginas, recuerda que estás usando un lenguaje de alto nivel.
Si estuvieras usando ensamblador entonces sí tendrías que tocar ese registro.

Si quieres saber qué es lo que está pasando con el registro PCLATH, dale una mirada al archivo .LST que genera el compilador.
 

Arriba