#define DIM(a)  (sizeof(a) / sizeof(a[0]))

unsigned short PowTenTbl[] =
{
    10000,
    1000,
    100,
    10,
    1
};

void BinToBcd(unsigned short bin, unsigned char *bcd)
{
    unsigned short powTen;
    unsigned char  digit;
    unsigned char  i;

    for (i = 0; i != DIM(PowTenTbl); i++)
    {
        digit = 0;
        powTen = PowTenTbl[i];

        while (bin >= powTen)
        {
            bin -= powTen;
            digit++;
        }

        *bcd++ = digit;
    }
}