реклама на сайте
подробности

 
 
> Перевод из 16 ричной в 10чную на Си
Slavast
сообщение Jan 25 2011, 13:39
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Добрый день!
Необходимо с АЦП вывести снятое напряжение на терминал.
Подскажите как на Си можно перевести число из 16ричной системы в 10чную?
А то фраза на экране "Напряжение АЦП: 0x56" смотрится как-то неубедительно.
Есть какой-то готовый код или библиотека?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
МП41
сообщение Jan 25 2011, 14:04
Сообщение #2


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Если на пальцах, то можно сделать так. Например, берёте с АЦП 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 нужно искать.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016