Если на пальцах, то можно сделать так. Например, берёте с АЦП 16-битное значение, зная, что оно в реальности 10-и битное и не будет больше 1023, начинаем отнимать 1000, покуда число больше 1000-и и считаем количество таких вычитаний (записываем в отдельную переменную). Далее вычитаем из того, что осталось сотни, покуда число не станет меньше сотни, считая количество сотен. Далее вычитаем десятки с аналогичной проверкой, в результате останутся единицы.
Цитата(Slavast @ Jan 25 2011, 15:48)

Я оперирую на AtMega 2561 числами в 16 ричной форме.
На самом деле Вы оперируете 16-ричным представлением двоичных чисел.
Код
char dec1000=0;//тысячи
char dec100=0;//сотни
char dec10=0;//десятки
char dec1=0;//единицы
while(value>1000)
{
value-=1000;
dec1000++;
}
while(value>100)
{
value-=100;
dec100++;
}
while(value>10)
{
value-=10;
dec10++;
}
dec1=value;
Извиняюсь, не "bin2dec", а "bin2BCD" для C нужно искать.