Keil's C51 permite compartir variables globales entre C y el código del ensamblador . Sin embargo, necesito almacenar una variable en el espacio de código de un microcontrolador 8051. Sin embargo, cuando intento acceder a la variable en el ensamblador obtengo algunos errores.
Tengo la siguiente declaración en mi archivo fuente c:
unsigned char code STATE = 0xFF;
Y en mi archivo de encabezado se ve así:
extern unsigned char code STATE;
Con el compilador Keils C51 es posible acceder a las variables globales en C utilizando la palabra clave EXTERN en su código de ensamblaje, así que en mi ensamblaje tengo:
EXTERN CODE (STATE)
Sin embargo, cuando intento acceder a la variable en mi ensamblaje, aparece el error: DATA-ADDRESS ESPERADOS :
MOV A, STATE ; Move state to A;
También como está en el espacio de código, debería acceder usando una instrucción MOVC, así debería funcionar:
MOVC A, STATE ; Move state to A;
Sin embargo, esto produce un error de TIPO DE EXPRESIÓN NO COMPATIBLE ( error AX51 A22 ).
Entonces, ¿cómo puedo acceder a esta variable en el ensamblador?