páginas de salto del microcontrolador PIC

1

Obtuve esta pregunta y quería saber si mi respuesta era correcta.

Q.92: Suponiendo que inicialmente el PIC se está dirigiendo a la página 0 en la memoria del programa; ¿Cuál de los siguientes fragmentos de código saltará a la ubicación del programa "PPS2" en la página 1?

a)
goto        PPS2
b) 
movlw       b’00010000’
movwf       PCLATH
goto        PPS2
c)
BSF     PCLATH,4
BCF     PCLATH,3
goto        PPS2
d) 
None of the above

Haciendo un poco de investigación en línea, entiendo que PCLatch es un registro en el banco 1 que funciona en conjunto con pcl para formar un registro de 13 bits debido al alto volumen de direcciones que se deben ver.

Como resultado, llegué a la conclusión (no estoy seguro de esto) de que para saltar a PPS2 en la página 1 de la página 0, simplemente ejecutaría el comando goto, por lo tanto, la solución A.

¿Tengo razón en esto?

    
pregunta user1819517

2 respuestas

3

La respuesta de Tcrosley es casi correcta y responde a la pregunta tal como se la formuló. Aparentemente, el punto del problema es que te des cuenta de que PCLATH < 4: 3 > debe tener el estado apropiado antes de cualquier GOTO, y si bien las opciones B y C establecieron estos bits, los configuraron en el valor incorrecto.

Sin embargo, la respuesta correcta no son los métodos de las opciones B o C para configurar PCLATH < 4: 3 > al valor correcto, pero usar PAGESEL. Específicamente, el código correcto es:

     pagesel    PPS2
     goto       PPS2
    
respondido por el Olin Lathrop
2

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
    
respondido por el tcrosley

Lea otras preguntas en las etiquetas