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

 
 
> Помогите разобраться с преобразованиями
Neytrino
сообщение Oct 12 2009, 09:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Уважаемые гуру помогите мне разобраться? в IAR нет функций преобразования bin2dec и обратно. Помогите уважаемы с кодом для С. Прошу не пинать сильно
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Neytrino
сообщение Oct 18 2009, 19:41
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



CODE

int bcd2dec (int bcd)
{
int x,y;
x = (bcd & 0xf);
y = ((bcd & 0xf0)>>4)*10;
return x+y;
}

Вот что получилось! Отлично работает!
А вот с обратным преобразованием как-то не получилось, вот код
CODE
int dec2bcd (int dec)
{
int w,x,y;
while ( dec >= 10)
{
dec -=10;
w++;
}
x = dec;

y = (w<<4);
return y+x;
}


Что я не так сделал? Я хотя бы правильным путем пошел?
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 18 2009, 20:02
Сообщение #3



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Neytrino @ Oct 18 2009, 23:41) *
...
Что я не так сделал?

Не прочитали статью в википедии, рекомендованную Вам на первой странице треда:
Цитата
...
При сложении двоично-десятичных чисел каждый раз, когда происходит перенос бита в старший полубайт, необходимо к полубайту, от которого произошёл перенос, добавить корректирующее значение 0110.
При сложении двоично-десятичных чисел каждый раз, когда встречается недопустимая для полубайта комбинация, необходимо к каждой недопустимой комбинации добавить корректирующее значение 0110 с разрешением переноса в старшие полубайты.
При вычитании двоично-десятичных чисел, для каждого полубайта, получившего заём из старшего полубайта, необходимо провести коррекцию, отняв значение 0110
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Oct 19 2009, 10:16
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Цитата(xemul @ Oct 19 2009, 00:02) *
Не прочитали статью в википедии, рекомендованную Вам на первой странице треда:

А можно, если конечно не сложно, разжевать это мне, я что-то не совсем понял данной статьи, если быть точнее как производить коррекцию и как вычислить в функции те самые недопустимые комбинации
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 19 2009, 11:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Neytrino @ Oct 19 2009, 16:16) *
А можно, если конечно не сложно, разжевать это мне, я что-то не совсем понял данной статьи, если быть точнее как производить коррекцию и как вычислить в функции те самые недопустимые комбинации

Проще всего делать bcd-преобразование непосредственно перед выводом на экран или сразу после ввода значения (если есть ввод). А вычисления делать в обычном бинарном формате, не заморачиваясь десятичной коррекцией.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Neytrino   Помогите разобраться с преобразованиями   Oct 12 2009, 09:38
- - Палыч   Цитата(Neytrino @ Oct 12 2009, 12:38) в I...   Oct 12 2009, 11:37
- - Rst7   ЦитатаЕсли нужно делать это быстро, то вычитанием ...   Oct 12 2009, 12:16
- - Neytrino   Да, я опрашиваю DS1307 и вывожу значения на LCD на...   Oct 12 2009, 12:41
- - Rst7   ЦитатаДа, я опрашиваю DS1307 и вывожу значения на ...   Oct 12 2009, 12:47
- - Neytrino   а что такое bcd? я что-то не совсем понял гугл   Oct 12 2009, 13:38
|- - Палыч   Цитата(Neytrino @ Oct 12 2009, 16:38) а ч...   Oct 12 2009, 14:22
- - Neytrino   CODEint bin2bcd(int v) { int out; int i1; i1=(...   Oct 13 2009, 15:56
|- - rezident   Цитата(Neytrino @ Oct 13 2009, 21:56) вот...   Oct 13 2009, 17:02
- - Neytrino   Люди, Вы наверное будите смеяться, но у меня снова...   Oct 13 2009, 17:22
- - rezident   Конечно бред. Вот код. Может не эстетично, зато де...   Oct 13 2009, 21:26
- - Neytrino   странно конечно, но правильно не работает... может...   Oct 17 2009, 17:38
|- - rezident   Цитата(Neytrino @ Oct 17 2009, 23:38) стр...   Oct 17 2009, 18:56
- - Rst7   Вы бы задачу конкретизировали. А то совсем не ясно...   Oct 17 2009, 17:50
- - Neytrino   Простите за глупый вопрос, но как выделить полубай...   Oct 17 2009, 19:26
|- - rezident   Цитата(Neytrino @ Oct 18 2009, 01:26) Про...   Oct 17 2009, 19:33
|- - demiurg_spb   Цитата(Neytrino @ Oct 17 2009, 23:26) Про...   Oct 18 2009, 06:58
- - sigmaN   ЦитатаЧтобы избежать неоднозначности я использовал...   Oct 17 2009, 22:37
|- - rezident   Цитата(sigmaN @ Oct 18 2009, 04:37) Я вот...   Oct 18 2009, 00:57
- - Rst7   ЦитатаНу мне надо вывести значения в десятичной си...   Oct 18 2009, 07:35
- - sigmaN   ЦитатаДык вы не просто читайте, а еще и в смысл пр...   Oct 18 2009, 11:15
- - Neytrino   Цитата(sigmaN @ Oct 18 2009, 15:15) Возьм...   Oct 18 2009, 15:44
- - sigmaN   Отлично. Начнем. Предположим, из порта(или откуда-...   Oct 18 2009, 16:25
- - Neytrino   Кажется до меня дошло!!!!!...   Oct 18 2009, 17:02
|- - xemul   Цитата(Neytrino @ Oct 19 2009, 14:16) А м...   Oct 19 2009, 13:43
- - baralgin   Neytrino В функции dec2bcd в глаза бросается неини...   Oct 18 2009, 20:31
|- - rezident   Цитата(baralgin @ Oct 19 2009, 02:31) rez...   Oct 19 2009, 00:08
- - Neytrino   Так, кажется понял буду пробовать, о результатах ...   Oct 19 2009, 19:45


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

 


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


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