void texto(rom char *cadena) {
char caracter=*cadena ;
printf("%c", caracter) ;
caracter=cadena[2] ;
printf("%c", caracter) ;
El problema está en que cuando hacés texto("HOLA") el "HOLA" está alojado en rom y no se almacena de la misma manera que cuando está en RAM. Eso hace que los respectivos punteros no sean equivalentes.
Al compilar, CCS genera el código necesario para cada tipo de punteros, pero nadie es perfecto...Código: [Seleccionar]void texto(rom char *cadena) {
char caracter=*cadena ;
printf("%c", caracter) ;
caracter=cadena[2] ;
printf("%c", caracter) ;
es equivalente a lo anterior pero funciona.
void texto(rom char *cadena) {
char *caracter = (char *) cadena;
printf("%c", caracter[0]) ;
printf("%c", caracter[1]) ;
printf("%c", caracter[2]) ;
printf("%c", caracter[3]) ;
...
No es problema de compilación, es otra cosa... :(
Yo ejecuto eso
- Tienes que ingresar para ver archivos adjuntos -
Lo único que hago es mentir la velocidad del micro en el Proteus (24MHz) porque con 8MHz la velocidad de transmision sale de 3200 bauds
No es problema de compilación, es otra cosa... :(
....
De todas formas, en adelante para proyectos complejos que tiren de punteros y demás, creo que tiraré de XC8.
...