Cómo inicializar datos en la memoria de programa

Estoy usando el compilador MPLAB IDE y C18 para programar Pic18f2550. Tengo que inicializar una cadena const en la memoria del programa para ahorrar espacio en la RAM, ¿cómo lo hago?

Respuestas (1)

Para poner una cadena constante en la memoria de datos, debe usar el romcalificador en el compilador C18:

rom const char[] = "some string";

EDITAR: Como consejo para futuras preguntas que pueda tener con respecto al compilador C18 (o cualquier otro compilador, para el caso): lea el manual del compilador antes de pedir ayuda. Hace tiempo que no uso el C18 y tuve que buscar la información que necesitabas. Solo me tomó 2 minutos encontrar el manual en Internet y buscar la información relevante. Hablo por experiencia cuando digo que es mucho más gratificante encontrar las respuestas uno mismo que pedir ayuda a alguien, especialmente cuando la información está fácilmente disponible.

Sí, eso es todo - "rom". Llegué justo antes que yo :-) Mi respuesta es incorrecta y la eliminaré.
@carveone Sí, su respuesta solo es válida para compiladores XC8 y HI-TECH PICC
¡Sí, publiqué primero y luego volví a leer la pregunta!
Interesante. ¿El compilador no reconoce los literales de cadena y hace esto por usted? Uso AVR, pero recuerdo vagamente algo similar (PGM, creo) como un calificador de "colocar esto en flash".
@sherrellbc Como sabe, los datos se pueden colocar en la memoria de datos o en la memoria del programa . De forma predeterminada, el compilador C18 coloca los datos en la memoria de datos , por lo que debe usar el romcalificador para colocarlos en la memoria de programa (flash) . Creo que tiene razón sobre el compilador AVR GCC, también usa una palabra clave especial para poner las variables en la memoria del programa.
Interesante... ¿cuáles son los pros/contras de poner este tipo de cosas en la memoria del programa frente a la memoria de datos?
@KGregory La memoria de datos (SRAM) en los microcontroladores suele ser mucho más pequeña que la memoria del programa (Flash). Entonces, si se está quedando sin memoria de datos, podría poner variables constantes en la memoria del programa para ahorrar espacio en SRAM. La desventaja de las variables en la memoria del programa es que requieren más tiempo y más instrucciones para acceder.