Una cosa de la rutina de bcd a binario. intenté usarla pero no me funcionaba.
Y la verdad es que no entiendo lo que hace.
char bcd2bin(char bcd_value)
{
char temp;
temp = bcd_value;
temp << 1; // Shifting upper digit right by 1 is same as mult. by 8
temp &= 0x78; // Isolate the bits for the upper digit
// Now return: (Tens *

+ (Tens *2) + Ones
return(temp + (temp << 2) + (bcd_value & 0x0f));
}
Hago un ejemplo de lo que hace paso a paso y me corrijes si me equivoco:
recibe el número en bcd, p.ejmplo el 24BCD=00100100BIN y lo guarda en temp.
Rota temp una vez a la izq., temp=01001000
Le hace una máscara con 0x78 (11111000). temp=01001000
01001000+00100001+00000100=01101101 (=109DEC)
109???
Saludos!!