Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 25.04.2016, 00:40  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,087
Сказал спасибо: 2,565
Сказали Спасибо 11,899 раз(а) в 5,972 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Сообщение от begun Посмотреть сообщение
одинаковые строки
они не одинаковые.
Сообщение от Paul74s Посмотреть сообщение
dec1-'0';
Сообщение от Paul74s Посмотреть сообщение
dec2-'0';
Выходная переменная - одна hex, а входные - decx
В каждой строке идет преобразование байта из ASCII в BCD-цифру и суммирование ее с содержимым переменной. Потом (если цифра не последняя), умножение переменной на 10.
В Вашем случае будет цикл с одной входной переменной - результатом чтения из УАРТа.
Реклама:
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 25.04.2016 в 09:54.
akegor вне форума  
Сказали "Спасибо" akegor
begun (25.04.2016)
Непрочитано 25.04.2016, 01:14  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 875
Сказал спасибо: 234
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

спасибо akegor
будем разбиратся
begun вне форума  
Непрочитано 25.04.2016, 09:52  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Сообщение от begun Посмотреть сообщение
в ПРОТЕУС -е в регистр записывается в виде
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'9'
Добрый день!
Судя по всему Вы как раз строку и отправляете.
Да действительно можно воспользоваться atoi(). Но я ею стараюсь меньше пользоваться, жрет много памяти. Но имейте в виду строка 1234567899 преобразуется к типу uint32_t, а вот 9987654321 уже не получится, будет переполнение, в CV тип uint64_t не поддерживается.
Ниже текст функции:


//Перевод из строки символов в двоичное число ф-ция возвращает результат типа unsigned lond int
// lgth - Требуемая длинна маcсива ка правило 10 но не длиннее и не 0 !!!
// *b - указатель на маcсив где должна быть строка
uint32_t bcd_bin (uint8_t lgth, uint8_t *b)
{
uint8_t i; //
uint32_t result=0; //
b=b+(lgth-1); // переместим указатель на конец масcива
result = result+((*b--)&0x0f) ; // прибавим старший разряд

for (i = lgth-1; i!=0; i--)
{
result = result*10; //
result = result+((*b--)&0x0f) ; // прибавить очередное число
}

return (result);
}
AlexPi вне форума  
Сказали "Спасибо" AlexPi
begun (26.04.2016)
Непрочитано 25.04.2016, 10:49  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 875
Сказал спасибо: 234
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

AlexPi большое за отзыв но я немного растерялся .
разрешите попытатся яснне выразить задачу а не в общих чертах.

с одного микроконтроллера avr через uart посылается информация на другой в виде:
(к примеру 3-х значное десятичное -999)

putchar(0x39);
putchar(0x39);
putchar(0x39);

на"avr data memory" другого (приемного) коттроллера в протеусе получаем следующую запись по ячейкам

39 39 39

HEX эквивалент числа по калькулятору XP равно 3E7.
------------------------------------------------------------------------
если передать из первого микроконтроллера число 3E7 в виде:

putchar(0x33);
putchar(0x45);
putchar(0x37)

то в дата мемори получаем:

39 45 37
--------------------------------
вот нужно преобразовать

39 39 39 в 39 45 37 на приемной стороне.

может на этом примере легче будет мне понятно если проясните?
begun вне форума  
Непрочитано 25.04.2016, 10:53  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Всем, кому не нравится данный метод, можно посоветовать написать свой велосипед, который будет выглядеть так:
uint64_t Value;
uint8_t text[20]; // Обязательно, нуль-терминированая строка
uint8_t i = 0;
Value = 0;
while (text[i]) {
Value = Value * 10 + (text[i] - '0');
i++;
};
Как бы... Всё. Долго. Без оптимизации. Надёжно как чугунный утюг.
После этого в Value будет точное значение. Всевозможные исключения типа отрицательных чисел и точки не обрабатываются, а приводят к очень весёлым последствиям.
-Alan- вне форума  
Непрочитано 25.04.2016, 11:20  
shyub
Прописка
 
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
shyub на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Принятое число помещаете в массив (младшие цифры - в младшие элементы массива), например char M[10], число в формате HEX формируете в int X и ещё одна локальная переменная int a.
I=0;
a=1;
for (n=0; n‹10; n++)
{
I=I+(M[n]-0x30)*a;
a=a*10;
}
shyub вне форума  
Непрочитано 25.04.2016, 11:37  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,087
Сказал спасибо: 2,565
Сказали Спасибо 11,899 раз(а) в 5,972 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

shyub, Вы бы прошли по шагам, просчитали свой алгоритм, хотя бы, для двух - трех разрядов.
Зачем так завернули и навернули?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 25.04.2016, 11:50  
shyub
Прописка
 
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
shyub на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Допустим число 1234, следовательно M[0]=0x34, M[1]=0x33, M[2]=0x32, M[3]=0x31.
После 1-го цикла: I=0x00 00 00 04;
После 2-го цикла: I=0x00 00 00 22;
После 3-го цикла: I=0x00 00 00 EA;
После 4-го цикла: I=0x00 00 04 D2;
Если M[4]-M[9]=0x30, т.е. нули (это я упустил) или количество циклов ограничивать кол-вом принятых знаков, то итоговое число не изменитс: 0x00 00 04 D2 = 1234.
shyub вне форума  
Непрочитано 25.04.2016, 12:00  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,087
Сказал спасибо: 2,565
Сказали Спасибо 11,899 раз(а) в 5,972 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Может, что-то и недосмотрел...
Гораздо проще результат умножать на десять и прибавлять к нему очередную цифру.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 25.04.2016, 12:27  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Сообщение от akegor Посмотреть сообщение
Может, что-то и недосмотрел...
Гораздо проще результат умножать на десять и прибавлять к нему очередную цифру.
Собственно, то же, что я и написал. Умножаем, прибавляем.

ТС: Между прочим, именно так число и будет выглядеть в памяти. Если нужно будет его куда-то ЕЩЁ передать в HEX-формате, то потом проходитесь по байтам и передаёте их куда-то ещё.
Вот таким видом:
Код:
	// v - переменная байт, в ней хранится тот байт, который сейчас нужно перевести в HEX-строку.
	char rs[3];
// В начале - верхний ниббл
	if ((v ›› 4) › 9) {
		rs[0] = ('7' + (s ›› 4));
	} else {
		rs[0] = ('0' + (s ›› 4));
	};
// Затем - нижний
	if ((v & 0x0F) › 9) {
		rs[1] = ('7' + (s & 0x0F));
	} else {
		rs[1] = ('0' + (s & 0x0F));
	};
	rs[2] = 0; // Нуль-терминированая строка.
У меня лично вот таким образом преобразовывает побайтно любые данные и выводит их в консоль.
-Alan- вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна программа для анализа протокола russo_turisto Микроконтроллеры, АЦП, память и т.д 10 21.03.2009 06:50
Программа перевода чисел. FOLKSDOICH Микроконтроллеры, АЦП, память и т.д 5 17.08.2008 14:12
Нужна программа Энергетик-2 или подобная ndreich Информация по радиокомпонентам 0 12.10.2007 00:49
нужна программа WAVRASM golinskiy Делимся опытом 1 30.05.2006 10:02


Часовой пояс GMT +4, время: 01:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot