Problemas al utilizar estructuras en keil C51
El cartel no entendió la estructura de 51.
Aunque la mayor parte de lo dicho anteriormente es una tontería, puede que no sea de mucha ayuda para tu proyecto
Pero al menos lo tiene. Así es. Configurarlo en xdata puede resolver tu problema.
Aunque no es una buena idea.
Hay tres tipos de 51 RAM.
Tus 128bytes están direccionados directamente internamente y 128bytes internamente de manera indirecta
También hay ram externa
Tu microcontrolador 51 tiene 512bytes
Entonces debe ser interno direccionamiento directo e indirecto 128
Más 256 bytes externos
Puedes simplemente cambiar todos los datos más grandes a la declaración xdata.
Por supuesto, si puedes controlarlo. el tamaño de la RAM Si es así... es más eficiente usar la declaración idata
Por ejemplo, unsigned char yy;
Escríbalo como unsigned char xdata yy;
(Puedes ver el tuyo El resultado de la compilación muestra data=137, xdata=0, code=4856
Deberías adivinar por qué se usa xdata
Finalmente, sugiero al autor Es mejor no usar printf en la función keil c51 (un desperdicio)
Regrese y observe la estructura de 51 con atención. Luego observe las diferencias entre keil c51 y ansi c
.Te será útil
Si te ayuda, recuerda aceptarla como una respuesta satisfactoria, ¡gracias!