El registro al que se refiere se llama PCLATH (no PCLatch), y se puede acceder desde cualquiera de los cuatro archivos de registro en las direcciones 0AH, 8AH, 10AH y 18AH para facilitar la escritura.
El PIC16f877A tiene 8K de programa Flash, pero las instrucciones CALL y GOTO solo proporcionan una dirección de 11 bits, por lo que la bifurcación se limita a una página de memoria de 2K, y se requieren cuatro páginas (13 bits) para asignar la memoria completa de 8K. / p>
Entonces, los 11 bits más bajos (10: 0) de la PC de 13 bits (contador de programas) provienen de la instrucción CALL o GOTO en sí, y los 2 bits superiores (12:11) provienen de los bits 4 y 3 del PCLATH resistir Como los bits PCLATH no se transfieren a la PC hasta que se ejecuta la instrucción CALL o GOTO, es seguro configurarlos de antemano. Esto generalmente se hace usando las instrucciones BSF y BCF.
¿Por qué los bits 4: 3 de PCLATH y no solo 1: 0? Debido a que los bits 4 y 3 se "alinean" con los bits 4 y 3 del byte alto de la PC. Esto probablemente hace que la estructura del bus interno sea más simple, y también permitiría diferentes tamaños de página, por ejemplo. 1K páginas en lugar de 2K usando bits 4: 2.
Si ejecuta una instrucción CALL, la dirección completa de 13 bits se guarda en la pila, por lo que cuando ejecuta una instrucción RETURN al final de la subrotuine, no tiene que preocuparse por los bits PCLATH.
Dado que las instrucciones CALL y GOTO solo proporcionan 11 bits de dirección, debe configurar explícitamente los bits PCLATH si son diferentes de la página en la que se encuentra, o no está seguro de cuáles son actualmente configurado en, incluso si va a ejecutar un CALL o GOTO dentro de la misma página.
Su solución c), donde utiliza las instrucciones BSF y BCF para acceder a PCLATH es casi correcta, excepto que saltará a la página 2 ya que está configurando el bit 4 y el bit 3 de borrado. Para la página 1, desea borrar el bit 4 y establece el bit 3:
BCF PCLATH,4
BSF PCLATH,3
goto PPS2