Главная » Микроконтроллеры
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Похожие статьи:


Преобразование из десятичной системы в двоичную

Самый очевидный способ десятично-двоичного преобразования вытекает непосредственно из формы записи десятичного числа:

Способ десятично-двоичного преобразования

Необходимо просто найти сумму book36-2.png, по заданным коэффициентам di. Ниже приведена подпрограмма, преобразования десятичного 4-разрядного числа из диапазона 0…9999 в его двоичный 2-байтовый эквивалент 0…0x270F. Преобразуемое число хранится в SRAM микроконтроллера в виде четырех двоично-кодированных десятичных цифр d4…d0.

; R17:R16 <- [YH:YL]
; R17:R16 – двоичное число после преобразования
; [YH:YL] – десятичное преобразуемое шестизначное число, 
; лежащее в диапазоне 0…9999 (косвенно адресуется через YH:YL)
; R18,R19 - вспомогательные регистры
; decnum – адрес десятичного числа в ОЗУ

dec4_bin16: 
     ldi   YL,low(decnum) ;заносим в указатель Y адрес 
	 ldi   YH,high(decnum);начала массива чисел d0…d4
     clr   R17            ;очищаем регистры R17      
     ld    R16,Y          ;заносим к R17:R16 число единицы d0
     ldd   R18,Y+1        ;добавляем к R17:R16 число десятков d1,
	 ldi   R19,10         ;умноженное на 10 (d1*10)
	 mul   R18,R19
	 add   R16,R0
	 ldd   R18,Y+2        ;добавляем к R17:R16 число сотен d2,
	 ldi   R19,100        ;умноженное на 100 (d2*100)
     mul   R18,R19
     add   R16,R0
     adc   R17,R1
     ldd   R18,Y+3        ;добавляем к R17:R16 число тысяч d3,
     ldi   R19,250        ;умноженное на 4*250 (d3*1000)
     fmul  R18,R19
     lsl   R0
     rol   R1
     add   R16,R0
     adc   R17,R1
     ret

Десятично-двоичное преобразование можно также произвести по схеме Горнера:
D = (…(dn-1*10 + dn-2)*10 + … + d1)*10 + d0 (2)

Такая запись десятичного числа позволяет использовать следующий алгоритм: старший разряд десятичного числа dn-1 умножается на 10 (основание системы), к нему прибавляется следующий разряд dn-2 и полученная сумма dn-1*10 + dn-2 снова умножается на 10 и т.д. Подпрограмма преобразования по схеме Горнера десятичного числа, лежащего в диапазоне 0…65535, в 2-байтовое 0…0xFFFF:

; R17:R16 <- [YH:YL]
; R17:R16 – двоичное число после преобразования
; [YH:YL] – десятичное преобразуемое число, лежащее
;  в диапазоне 0…65535 (косвенно адресуется через YH:YL)
; R18,R19,R20,R21 – вспомогательные регистры
; decnum – адрес десятичного числа в ОЗУ

dec5_bin16:
    ldi   YL,low(decnum + 5)    ;заносим в указатель Y адрес
	ldi   YH,high(decnum + 5) ;конца массива чисел d0…d5 
	clr   R21            ;очищаем вспомогательный регистр R21
	ldi   R18,10         ;в дальнейшем R18 будет множителем
	ldi   R20,4          ;инициализируем счётчик циклов
	ld    R16,-Y         ;заносим старший разряд dn-1  
db1: mul   R17,R18        ;производим очередное действие
	mov   R17,R0         ;умножения dn-1*10  
    mul   R16,R18
	mov   R16,R0
	add   R17,R1       
    ld    R19,-Y         ;берём очередной разряд dn-2  
	add   R16,R19        ;и добавляем к произведению dn-1*10   
	adc   R17,R21
    dec   R20            
	brne  db1            ;повторяем цикл n-1 раз
	ret

С точки зрения требуемых вычислительных ресурсов десятично-двоичные преобразования, проведенные по формулам (1) и (2), примерно равноценны. Оба алгоритма требуют по n-1 операций сложения и умножения. Однако за счёт того, что в схеме Горнера используется умножение на постоянный множитель 10, вместо серии умножений на 10, 100, 1000… , ее использование оказывается более предпочтительным для преобразования многоразрядных чисел (легче организовать умножение в цикле и меньше команд уходит на подготовку множителя).

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
USB-реле (2 канала) Модуль радиореле на 4 канала
вверх