Autor Tema: Ayuda con punteros.  (Leído 1588 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado djdapinrmx

  • PIC10
  • *
  • Mensajes: 6
Ayuda con punteros.
« en: 16 de Noviembre de 2010, 21:51:04 »
Hola, buen dia a todos.

Programo con CCS al pic 18F4550 y todo funciona bien. Solo tengo un problemita. Lean el siguiente codigo:

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C0,rcv=PIN_B2,bits=8,stream=PC1)


char  *probe, eti=0;
int1  fi=0;
long  i=0, j=0;

#int_RDA
RDA_isr()
{
*(probe + i) = getchar(PC1);
fi=1;
}

void main()
{
   setup_psp(PSP_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   ext_int_edge(2,H_TO_L);          //Configura interrupcion con flanco de subida
   enable_interrupts(INT_EXT2);     //Habilita interrupcion dos
   enable_interrupts(INT_RDA);      //Habilita interrupcion del RS232
   enable_interrupts(GLOBAL);
   setup_oscillator(False);


   probe=0xE1;
   fprintf(PC1"Encendido!\n\r");
   fprintf(PC1,"\n\reti mide :%u bytes\n\r", sizeof(eti));
   fprintf(PC1,"\n\reti se localiza en :%u\n\r", &eti);
   fprintf(PC1,"\n\rprobe se localiza en :%u\n\r", &probe);
   fprintf(PC1,"\n\rprobe apunta a:%u\n\r", probe);
   
   while(TRUE)
   {
      if (fi==1)
      {
         fprintf(PC1,"\n\rSe recibio:%c\n\r", *(probe + i));
         fprintf(PC1,"\n\rSe escribio en la direccion:%u\n\r", (probe + i));
         
         if ((*(probe + i) == 0x0D))
         {
            *(probe + i)='\0';
            fprintf(PC1,"\n\rSe recibio:");
            for (j=0; j<=i; j++)
            {
               fprintf(PC1,"%c", *(probe + j));
               //delay_ms(25);
             }
            fprintf(PC1,"\n\rDe otro modo:%s\n\r", probe);
            i=0;
         }
         else
            i++;
         fi=0;
      }
   }
}


En este código, probe apunta a 0xE1 y lo que recibo por el rs232 lo guardo a partir de esa dirección. El problema es que después de que mi direccion llega a 255 se hace 0 y la cuenta vuelve a empezar.  Por ejemplo:

225, 226, 227…254, 255, 0,1,2,3,4…. Y así cíclicamente.

Lo que recibo por el rs232 si se desplega bien aun cuando ya he pasado el 255.

Si envío “hola mundo” se guarda bien y si envío una frase mucho mas larga también se guarda bien.

Al parecer si guardo alguna frase con más de 255 caracteres se guarda bien y lo despliega bien.

Mi duda es por que cuando muestra la direccion en la que se guardo lo recibido vuelve a reiniciarse después de 255, ¿sera solo un error de impresión? ¿realmente en esas direcciones esta guardando lo recibido?.

Alguien que me puede ayudar por favor, de antemano gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Ayuda con punteros.
« Respuesta #1 en: 16 de Noviembre de 2010, 22:10:26 »
Hola, ya tienes un tema abierto. Sigue allá.
http://www.todopic.com.ar/foros/index.php?topic=32839.msg274248#msg274248

Tema cerrado.