Форум РадиоКот https://radiokot.ru/forum/ |
|
AVR Assembler Преобразование типов https://radiokot.ru/forum/viewtopic.php?f=20&t=75144 |
Страница 1 из 1 |
Автор: | sx386 [ Вт июл 03, 2012 17:07:50 ] |
Заголовок сообщения: | AVR Assembler Преобразование типов |
AVR Assembler Есть переменная типа BYTE Как её преобразовать в STRING Например: Код: VarIn: .byte 1
VarOut: .byte 3 Есть VarIn = 156 (0x9c) Нужно VarOut [1 баит] = 1 (или ASCII код этого символа) VarOut [2 баит] = 5 (или ASCII код этого символа) VarOut [3 баит] = 6 (или ASCII код этого символа) |
Автор: | ChipKiller [ Вт июл 03, 2012 17:38:30 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
sx386 писал(а): ...Как её преобразовать в STRING это что то новое ![]() |
Автор: | sx386 [ Вт июл 03, 2012 17:54:01 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
Перефразирую: Есть переменная типа BYTE Необходимо значение этой переменой записать в 3 переменные типа BYTE таким образом, чтобы получилось 1 переменная BYTE будет содержать сотни 1 переменная BYTE будет содержать десятки 1 переменная BYTE будет содержать еденицы |
Автор: | ChipKiller [ Вт июл 03, 2012 18:02:51 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
Цитата: Перефразирую:..... и причем тут STRING, когда это называется отображение числа в кодировке ASCII - похоже Вам нужно преобразование. Для этого к сотням, десяткам и единицам прибавьте код 0x30 (ASCII код '0')
|
Автор: | Ser60 [ Вт июл 03, 2012 18:03:30 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
Разделите переменную на 100 нацело - будут сотни. Например 756 / 100 = 7. Остаток разделите на 10 - будут десятки. В примере выше остаток равен 56, и 56 / 10 = 5. Остаток от последнего деления будет единицы. |
Автор: | sx386 [ Вт июл 03, 2012 19:35:01 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
А как разделить ? Микроконтроллеры, на сколько я понял из прочитанного в книге, не поддерживают операцию деления Собственно нужно число, находящиеся в переменной вывести в LCD |
Автор: | Ser60 [ Вт июл 03, 2012 19:45:27 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
Для деления на 100, вычитайте из числа 100 пока результат не станет отрицательным. Число вычетов будет равно целой части частного при делении. Вообще, почитайте книги про программированию на AVR. Это стандартная задача, изложенная практически в любой книге. |
Автор: | ILYAUL [ Вт июл 03, 2012 19:45:31 ] | ||
Заголовок сообщения: | Re: AVR Assembler Преобразование типов | ||
Цитата: ..не поддерживают операцию деления Опреция деления - это последовательное вычитание одного числа из другого , источник - математика начальной школы. А любой проц это умеет.
|
Автор: | GP1 [ Ср июл 04, 2012 09:43:35 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
ILYAUL +1 тоже пользуюсь AVR204 и не парюсь ![]() |
Автор: | Alexeyslav [ Ср июл 04, 2012 13:40:07 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
Где-то эта тема уже обсуждалась. Это называется BIN-2-BCD преобразованием. В результате которого из двоичного числа получается двоично-десятичное, у которого каждая половина байта - это одна цифра. Такое число несложно разобрать на строку. Самый простой способ такого преобразования "влоб" это крутить два счетчика - один это исходное число, а второй - это двоично-десятичный счетчик результата. Исходное число декрементируется до нуля, а в это время результат инкрементируется с учетом десятичной коррекции разрядов. Но метод этот жутко неэффективный, для одного байта в худшем случае надо проделать 255 итераций, для 16-битного числа - более 65000. Поэтому сначала прокручивают счетчики тысячами, потом сотнями, десятками и единицами. Причем не прокручивают, а используют операции суммирования-вычитания. основная проблема это учет десятичной коррекции, но если на "байтах" не экономить, то можно выделить под каждый разряд результата(5 разрядов для 16 бит) один байт и сильно упростить себе задачу. для PIC-контроллеров видел эффективные алгоритмы с применением математических трюков, которые преобразуют 32-бит число за максимум 200 машинных циклов. Для других контроллеров таких алгоритмов не встречал... |
Автор: | ILYAUL [ Ср июл 04, 2012 16:03:36 ] |
Заголовок сообщения: | Re: AVR Assembler Преобразование типов |
С появлением команд mul - стало значительно легче |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |