Buenos dias Amigos, soy nuevo en este foro. Tengo un pequeño problema con unos punteros. Estoy trabajando con la familia k60 de Freescale.
Tengo una tabla de codigo con unos textos los cuales quiero visualizar. La rutina para visualizar le paso la dirección del primer dato a visualizar pero me pasara una dirección erronea a la rutina.
const unsigned char VERSION[2][16]={
" MODELO ",
" CM8V001R01 "};
SacaLCD((unsigned long*) &VERSION[0][0],16,LINSUP,0);
void SacaLCD(unsigned long *dir,unsigned char longitud,unsigned char linea,unsigned char pos){
unsigned char a;
WriteLCDCTR(linea|pos); // Se posiciona en el LCD
for(a=0;a<longitud && *dir!='\0';a++,dir++)
WriteLCD(*dir); // Visualiza el dato
}
Si la dirección del priemer byte de VERSION[0][0] es 0x000046b9 , cuando entre en la rutina SacaLCD la dirección que me llega ( dir ) es 0x000048e8. He probado direfentes modificaciones, el puntero en char, int, pero siempre me pasa la dirección erroneamente. Si declaro la variable VERSION en RAM me la pasa correctamente. Pero deseo que sea una tabla de código.
Esto lo hacía siempre así trabajando con el complilador keil uvision para 8051, ahora el codewarior funciona diferente y no me reconoce correctamente esto. A Alguien le ha pasado algo así ?