Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глупый вопрос
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MMP
Подскажите как преобразовать десятичное число(скажем 50) в шестнадцатеричное, но не 0х32(как оно должно быть), в 0х50.
ps1x
Цитата(MMP @ May 8 2006, 17:42) *
Подскажите как преобразовать десятичное число(скажем 50) в шестнадцатеричное, но не 0х32(как оно должно быть), в 0х50.


Действительно странный вопрос (dec) 50=0x32 (hex) и этого не изменить. Оно никак не должно быть 0х50.... glare.gif

А вообще хоть калькулятором в виндовс (инженерный режим)
IEC
Это называется двоично-десятичный формат чисел. Ищи по форуму. Недавно давался алгоритм преобразования.
ps1x
Цитата(IEC @ May 8 2006, 17:55) *
Это называется двоично-десятичный формат чисел. Ищи по форуму. Недавно давался алгоритм преобразования.

bb-offtopic.gif
Ого, я и не знал о таком даже...
Pat
Цитата(MMP @ May 8 2006, 15:42) *
Подскажите как преобразовать десятичное число(скажем 50) в шестнадцатеричное, но не 0х32(как оно должно быть), в 0х50.

Только наверное надо получить не шестнадцатеричное, а двоично-десятичное число (BCD формат).
Функция преобразует числа в диапазоне от 0 до 99.
unsigned char DEC_BCD(unsigned char val)
{
unsigned char t;
t = val / 10;
val = val - (t * 10);
t <<= 4;
t = t | val;
return t;
}
INT1
преобразование BIN -> BCD подробно описано:
http://www.atmel.ru/Articles/Atmel13.htm
MMP
[/quote]
Только наверное надо получить не шестнадцатеричное, а двоично-десятичное число (BCD формат).
Функция преобразует числа в диапазоне от 0 до 99.
unsigned char DEC_BCD(unsigned char val)
{
unsigned char t;
t = val / 10;
val = val - (t * 10);
t <<= 4;
t = t | val;
return t;
}
[/quote]

Большое спасибо вот - это то что надо
IEC
Только проконтролируй длительность выполения данной функции по времени. Может быть придётся переписать деление на вычитание!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.