[an error occurred while processing this directive]
Нашёл более понятный мне вариант по ссылке ниже, так что придётся отложить изучение наворотов на потом, всё одно спасибо.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Sergey Smirnow 10 января 2003 г. 14:22
В ответ на: Ответ: ok отправлено bam 10 января 2003 г. 14:07

;Эта подпрограмма преобразовывает 3-байное двоичное беззнаковое
; число в упакованное BCD-число (занимает 4 байта).
;(Максимальные возможности 0xffffff -> .16777215)
;
;Вход подпрограммы:
;------------------
; BIN0, BIN1, BIN2 - 3-байтное двоичное число, размещенное
; в последовательно расположенных в памяти ячейках (BIN0 - младший байт).
;
;Выход подпрограммы:
;-------------------
; BCD0, BCD1, BCD2, BCD3 - BCD-число (возвращается в последовательно
; расположенных ячейках, где в младших 4 битах BCD0 размещается младший разряд
; BCD - числа).
;
;Используется алгоритм сдвига двоичного числа в двоично-десятичную
; разрядную сетку.
;
; 985 циклов

clrfbcd0
clrfbcd1
clrfbcd2
clrfbcd3
movlwd'24'
movwfcount
gotolab

nextmovfbcd0,W
callcorr
movwfbcd0
movfbcd1,W
callcorr
movwfbcd1
movfbcd2,W
callcorr
movwfbcd2
movfbcd3,W
callcorr
movwfbcd3
labrlfbin0
rlfbin1
rlfbin2
rlfbcd0
rlfbcd1
rlfbcd2
rlfbcd3
decfszcount,F
gotonext
return

corraddwfPCL,F
retlwb'00000000';0
retlwb'00000001';1
retlwb'00000010';2
retlwb'00000011';3
retlwb'00000100';4
retlwb'00001000';5+3=8
retlwb'00001001';6+3=9

retlwb'11000011';9+3=C 3
retlwb'11000100';9+3=C 4
retlwb'11001000';9+3=C5+3=8
retlwb'11001001';9+3=C 6+3=9
retlwb'11001010';9+3=C7+3=A
retlwb'11001011';9+3=C8+3=B
retlwb'11001100';9+3=C 9+3=C

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru