Buenas noches compañeros, estoy intentado convertir unos datos capturados y almacenados en un array, a su equivalente bcd. Pero el resultado es un disparate y no comprendo por que, espero alguno de uds tenga una perspectiva mas esclarecedora. El siguiente código debería arrojar como resultado una suma de 255. Desde ya agradezco este espacio.
Codigo:
#include <16F877A.H>
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 20000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
void main()
{
int j=0;
char dato[8]={'1','1','1','1','1','1','1','1'};
int fcode=0;
int pot=0;
printf("\r\f\nDato = %s\n",dato);
for(j=0;j<=7;j++)
{
if(dato[j]=='1')
{
pot=(2^j);
fcode=fcode+pot;
}
printf(" \nbit = %u pot = %u Suma = %u ",j,pot,fcode);
}
j=0;
fcode=0;
pot=0;
}
Resultado :
{FF}
Dato = 11111111
bit = 0 pot = 2 Suma = 2
bit = 1 pot = 3 Suma = 5
bit = 2 pot = 0 Suma = 5
bit = 3 pot = 1 Suma = 6
bit = 4 pot = 6 Suma = 12
bit = 5 pot = 7 Suma = 19
bit = 6 pot = 4 Suma = 23
bit = 7 pot = 5 Suma = 2