Problema con Access RAM en PIC18F26J50

Hola.
Estoy desarrollando un programa en un PIC18F26J50 con MPLAB 8.83 y MPASMWIN 5.43 y al compilar me sale el error 171: La dirección especificada no está en el rango de la Access RAM [0x60,0xFF].

Este error me sale para todas las instrucciones en las que trato de acceder a las variables de mi programa, que las tengo definidas así:

CBLOCK 0x004
Ejemplo1
Ejemplo2
Ejemplo3
ENDC

Y las instrucciones que me dan el error son de este tipo:
MOVF Ejemplo1,W,ACCESS

Según el datasheet del micro (familia PIC18F46J50) la Access RAM está formada por los 96 primeros bytes del banco 0 (o sea, desde 0x00 hasta 0x59) y los 160 últimos del banco 15 (o sea, desde 0x60 hasta 0xFF) siendo los primeros de propósito general (GPRs) y los últimos, registros de funciones especiales (SFRs).

Parece que el MPASM no me está permitiendo acceder a la Access RAM si la dirección es inferior a 0X60. No hay ningún problema si, por ejemplo, trato de acceder a los registros especiales (que están hacia arriba a partir de esa dirección).

¿Alguien sabe decirme qué estoy haciendo mal, o qué he entendido mal del datasheet? ¿Hay alguna directiva en el MPASM u opción en el MPLAB que me pueda estar bloqueando este acceso?

Muchas gracias.
 
Hola:
Aver si te sirve de algo. Nunca he programado la serie 18 en ensamblador,pero leyendo en el datasheet explica como manejar los bancos, en el apartado "BANK SELECT REGISTER (BSR)"
Comprueba si eso tiene algo que ver con lo que estas haciendo.
Un saludo
 
Gracias por interesarte, rachelies. Al final ya he descubierto cuál era el problema, y también viene explicado en el datasheet; pero este es tan extenso que la sección correspondiente me pasó desapercibida.

Resulta que activé el juego de instrucciones extendido para facilitarme la indexación, que la voy a utilizar bastante en mi proyecto. Pero esto produce varias modificaciones en el funcionamiento del PIC que utilizo, y una de ellas está relacionada con el acceso a las posiciones de RAM que comentaba: En una instrucción que haga referencia mediante Access RAM a un dirección inferior a la 0x60, a esa dirección se le suma el valor del registro puntero FSR2, y además obliga a utilizar una sintaxis distinta (encerrar la dirección indicada entre corchetes). Este era el problema.

Espero que esto le sirva a otros que puedan cometer el mismo error.

Nuevamente, gracias.
 
Atrás
Arriba