Estoy intentando enviar un número desde una PC a un PIC18f4550 como una matriz usando USART y luego convertirlo en un entero usando una rutina dentro del PIC.
El problema es que, en algunos casos, el número entero no es el mismo número que la matriz (generalmente es 1 unidad menos) como muestro en la imagen.
#include<18F4550.h>#include<math.h>#FUSESNOWDT,XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG#usedelay(clock=20000000)#users232(uart1,baud=9600)intcount[5]={0,0,0,0,0};intpulses=0;inti=0;intj=0;voidmain(){while(true){delay_ms(10);pulses=0;for(i=0;i<5;i++)//Convertsthearrayintoaninteger{pulses=pulses+count[4-i]*pow(10,i);}printf("P: %u ",pulses); //Prints the integer and the used array
for(i=0; i<5; i++)
{
printf("%u ",count[i]);
}
printf("\r");
if(count[4]<9) //Increases the array in 1
count[4]++;
else
{
count[4]=0;
if(count[3]<9)
count[3]++;
else
{
count[3]=0;
if(count[2]<9)
count[2]++;
else
{
count[2]=0;
if(count[1]<9)
count[1]++;
else
{
count[1]=0;
count[0]++;
}
}
}
}
}
}