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;