Red de conocimiento informático - Computadora portátil - ¿Cómo accede el lenguaje C del microcontrolador 51 al espacio de memoria fijo?

¿Cómo accede el lenguaje C del microcontrolador 51 al espacio de memoria fijo?

Las variables globales y las matrices definidas en C son fijas, es más conveniente operarlas directamente. El compilador asigna automáticamente la dirección real y la ubicación específica depende del ensamblaje.

Se puede especificar directamente en el ensamblaje, lo cual es la ventaja del ensamblaje.

Lo siguiente se transfiere desde Internet

Vi a alguien en Internet mencionar el problema del uso de _at_ para el posicionamiento absoluto de direcciones en keil. Presentaré brevemente su uso.

El procedimiento para utilizar la palabra clave _at_ para localizar la dirección absoluta de la memoria es el siguiente

#i ncludelt;reg51.hgt;

char xdata LED_Data [50] _at_ 0x8000;

main()

{

LED_Data[0] = 0x23;

}

En Para ejecutar el programa anterior en keil, puede ingresar x: 0x8000 en la ventana de memoria. Puede ver que el valor en la dirección 0x8000 es 0x23.

Algunos puntos que vale la pena señalar son.

1. Al asignar variables Cuando LED_Data[50] localiza el espacio de direcciones absoluto, no se le puede asignar un valor inicial.

2.char xdata LED_Data[50] _at_ 0x8000; esta declaración no se puede incluir en la función principal. Algunos internautas mencionaron que cuando se usa _at_ para el posicionamiento absoluto de la dirección de acuerdo con las instrucciones de keil, aparecerá un error 274 durante la compilación, por lo que esta declaración se coloca en la función principal.

3. La dirección en keil se asigna automáticamente, por lo que no se recomienda utilizar el posicionamiento de dirección absoluto a menos que existan circunstancias especiales. Principiantes, tengan cuidado. No utilice c como ensamblaje.