converter BCD para ASCII

Alo galera, alguem poderia me ajudar numa função em linguagem C que converta o codigo BCD para ASCII eu esotu ultilizando MC at89s8253.
Fórum sobre desenvolvimento de sistemas embarcados: Hardware e Software, Tecnologias: Eletrônica digital e analógica, Microcontroladoras, Microprocessadores, Sistemas *NIX (Linux, BSD), Software embarcado Baremetal. Sem fins lucrativos.
http://www.asm51.com.br/phpbb/
//---------------------------------------------------------------------------
unsigned char hex2bcd(unsigned char hex)
{
unsigned char bcd;
bcd = ((hex / 10) << 4) + (hex % 10);
return(bcd);
}//hex2bcd
//---------------------------------------------------------------------------
unsigned char bcd2hex(unsigned char DataBCD){
return ((DataBCD / 16) * 10 + DataBCD % 16);
}
//---------------------------------------------------------------------------
//------ bcd2ascii ------
unsigned char digito[2];
digito[0] = (bcd >> 4) + 0x30;
digito[1] = ((bcd & 0x0F ) | (unsigned char)0x30);
char BCD2ASCII ( char * dado )
{
char var;
var = *dado;
*dado = (var & 0x0F) + '0';
return ( (var & 0xF0) >> 4 + '0' );
}
void main ( void )
{
char dezenas, dado_BCD;
dado_BCD = 0x78;
dezenas = BCD2ASCII ( &dado_BCD );
// UNIDADES EM dado_BCD; DEZENAS EM dezenas;
while(1);
}