Esta son unas macros en lenjuage C que hice y que uso a menudo para converciones binarias a bcd y viceversa .(las he usado en Pics,Atmel y Arm).
Agregan estas macros en su archivo *.h
#define BCD2BIN(val) (((val)&15) + ((val)>>4)*10) //conversion Bcd a Binario
#define BIN2BCD(val) ((((val)/10)<<4) + (val)%10) //conversion Binario a Bcd
Modo de uso: (archivo *.c)
char Resultado; definan las variables a usar
char Valor;
Valor = 0x15;
Resultado = BCD2BIN(Valor);
Respuesta: Resultado = 00001111b;
Valor = 00010000b;
Resultado = BIN2BCD(Valor);
Respuesta: Resultado = 0x16;