Пробовал -- не хватает памяти контроллера...
Нужно что то полегче...
/*****************************************************************************
Преобразовывает переменную UINT в неупакованное BCD
Если параметр ch == TRUE, то, дополнительно, преобразует полученное число в
строку
******************************************************************************/
void uint2bcd(UINT16 src, UCHAR *trg, BOOL ch)
{
UINT16 d = 10000;
for(UCHAR i = 0; i < 5; i++) /* цикл по пяти знакам */
{
trg[i] = 0; /* формируем сумму искомого числа */
while(src > d) /* пока порядок не отрицательный */
{ src-= d; /* вычитаем из знака порядок */
trg[i]++; /* и увеличиваем искомое число */
}
if(TRUE == ch) /* преобразуем в ASCII символ */
{ trg[i] += 0x30;
}
d /= 10; /* получаем следующий (младший) порядок */
}
trg[5] = 0;
}
/*****************************************************************************
Преобразовывает переменную ULONG в неупакованное BCD
Если параметр ch == TRUE, то, дополнительно, преобразует полученное число в
строку
******************************************************************************/
void ulong2bcd(UINT32 src, UCHAR *trg, BOOL ch)
{
UINT32 d = 1000000000;
for(UCHAR i = 0; i < 10; i++) /* цикл по десяти знакам */
{
trg[i] = 0; /* формируем сумму искомого числа */
while(src > d) /* пока порядок не отрицательный */
{ src-= d; /* вычитаем из знака порядок */
trg[i]++; /* и увеличиваем искомое число */
}
if(TRUE == ch) /* преобразуем в ASCII символ */
{ trg[i] += 0x30;
}
d /= 10; /* получаем следующий (младший) порядок */
}
trg[10] = 0;
}
Спасибо счас попробую обкатать...