PIC MCU saltos cortos y largos en ensamblaje [cerrado]

-4

si quiero dar un pequeño salto desde una dirección de memoria, digamos de 0x0040 a 0x0060, ¿el código de ensamblaje es como el siguiente?

ORG 0x0020
GOTO 0X0060

Y si quiero hacer un salto largo del banco 1 al banco 3, por ejemplo, la dirección 0x0810 a la dirección 0x1810 es como:

ORG 0x0810
BSF PCLATH,3
BSF PCLATH,4
GOTO 0X1810

??

    
pregunta 20317

2 respuestas

3

No está claro cuál es tu pregunta en realidad, pero sí, debes configurar PCLATH < 4: 3 > para saltar de manera confiable a cualquier ubicación en la memoria del programa usando una instrucción GOTO en la arquitectura PIC de 14 bits original. Esto está, por supuesto, todo muy bien descrito en la hoja de datos en varios lugares. ¿En qué estás confundido exactamente?

También tienes algunas otras confusiones. No hay distinción entre un salto "largo" o "corto". La instrucción GOTO siempre hace lo mismo. Los 11 bits bajos de la dirección de destino provienen de la instrucción en sí, y los 2 bits superiores de PCLATH < 4: 3 & gt ;. Esto no tiene nada que ver con si los dos bits superiores son los mismos en las direcciones de origen y destino o no.

No, no puede saltar entre el banco 1 y el banco 3. La memoria de datos no se puede ejecutar, solo la memoria del programa. Puede saltar entre páginas de la memoria del programa, con la única distinción de que los 2 bits superiores de la dirección cambian al saltar entre páginas.

Si utiliza la convención que PCLATH < 4: 3 > siempre se configuran en la página que se está ejecutando en ese momento y usted sabe que el objetivo está en la misma página, entonces no tiene que establecer nada explícitamente en PCLATH. Sin embargo, esta es una convención que depende completamente de usted. El hardware se puede utilizar de varias maneras.

    
respondido por el Olin Lathrop
1

de: enlace

  

Para saltar entre las páginas de la memoria del programa, los bits altos del Programa   El contador (PC) debe ser modificado. Esto se hace escribiendo el deseado   valor en un SFR llamado PCLATH (Program Counter Latch High). Si   Se ejecutan instrucciones secuenciales, el contador del programa se cruzará.   Los límites de la página sin la intervención del usuario. Para dispositivos que   tener menos de 8K palabras, accediendo a una ubicación por encima de la física   Dirección implementada causará un envolvente. Es decir, en una palabra 4K   El dispositivo que accede a 17FFh en realidad se dirige a 7FFh. Dispositivos de 2K palabras (o   menos) no requieren paginación.

Parece que funcionará lo que estás haciendo, ¿no es así?

    
respondido por el Grady Player

Lea otras preguntas en las etiquetas