Например TDA7294

Форум РадиоКот • Просмотр темы - преобразование HEX to DEC
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 18:50:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: преобразование HEX to DEC
СообщениеДобавлено: Чт ноя 30, 2017 01:21:14 
Встал на лапы

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн дек 08, 2014 19:45:24
Сообщений: 117
Откуда: Воронеж
Рейтинг сообщения: 0
Вот например, есть такая табличка, ASCII зовется. И у 16-ричных чисел есть десятичное значение. Типа 000h - 0d, а 0FFh - 255d. Мне нужно нужно как-то преобразовать байт в это значение, и получить его в виде 3 BCD-чисел. Че-то подзавис, и в книжках что-то не особо. Топорно Таблично это не тоже не получается. Есть какие способы преобразования?
Изображение

_________________
Трудное детство, стальные игрушки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Чт ноя 30, 2017 01:59:14 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
Самый простой способ вычитанием. Из, допустим, слова $XXXX вычитаете 10'000 и складываете в регистр десятков тысяч, когда остаток становится меньше вычитаете 1'000 и складываете в регистр тысяч и т.д. Например
Спойлер
Код:
.equ   END_VIDEO_RAM=10
.def   temp5=r21
/************************************************************/
   
   RCALL   BIN24BCD8
   RJMP   PC-1

bin24BCD8:

    LDI      XL,LOW(END_VIDEO_RAM-5)
    LDI    XH,HIGH(END_VIDEO_RAM-5)

bin24BCD8A:

    SER    TEMP5

bin24BCD8_1:

    INC    TEMP5
    SUBI    R16,BYTE1(10000000)
    SBCI    R17,BYTE2(10000000)
    SBCI    R18,BYTE3(10000000)
    BRSH    bin24BCD8_1      
    SUBI    R16,BYTE1(-10000000)
    SBCI    R17,BYTE2(-10000000)
    SBCI    R18,BYTE3(-10000000)

    ST       X+,TEMP5

    SER    TEMP5

bin24BCD8_2:

    INC    TEMP5
    SUBI    R16,BYTE1(1000000)
    SBCI    R17,BYTE2(1000000)
    SBCI    R18,BYTE3(1000000)
    BRSH    bin24BCD8_2
    SUBI    R16,BYTE1(-1000000)
    SBCI    R17,BYTE2(-1000000)
    SBCI    R18,BYTE3(-1000000)

    ST       X+,TEMP5
           
    SER    TEMP5

bin24BCD8_3:

    INC    TEMP5
    SUBI    R16,BYTE1(100000)
    SBCI    R17,BYTE2(100000)
    SBCI    R18,BYTE3(100000)
    BRSH    bin24BCD8_3
    SUBI    R16,BYTE1(-100000)
    SBCI    R17,BYTE2(-100000)
    SBCI    R18,BYTE3(-100000)
   
   ST       X+,TEMP5
         
    SER    TEMP5

bin24BCD8_4:

    INC    TEMP5
    SUBI    R16,BYTE1(10000)
    SBCI    R17,BYTE2(10000)
    SBCI    R18,BYTE3(10000)
    BRSH    bin24BCD8_4
    SUBI    R16,BYTE1(-10000)
    SBCI    R17,BYTE2(-10000)
    SBCI    R18,BYTE3(-10000)
    ST       X+,TEMP5

    SER    TEMP5

bin24BCD8_5:

    INC    TEMP5
    SUBI    R16,BYTE1(1000)
    SBCI    R17,BYTE2(1000)
    BRSH    bin24BCD8_5
    SUBI    R16,BYTE1(-1000)
    SBCI    R17,BYTE2(-1000)
   
   ST       X+,TEMP5

    SER    TEMP5

bin24BCD8_6:

    INC    TEMP5
    SUBI    R16,BYTE1(100)
    SBCI    R17,BYTE2(100)
    BRSH    bin24BCD8_6
    SUBI    R16,BYTE1(-100)
    SBCI    R17,BYTE2(-100)
   
   ST       X+,TEMP5

    SER    TEMP5

bin24BCD8_7:

    INC    TEMP5
    SUBI    R16,10
    BRSH    bin24BCD8_7
    SUBI    R16,-10
   
   ST       X+,TEMP5
   
bin24BCD8_8:

     ST    X,R16

    RET
.exit
Естественно есть великое множество вариантов таких преобразований.
Преобразование полученных чисел в ASCII просто добавить 0x30


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Чт ноя 30, 2017 07:53:02 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 82
Зарегистрирован: Сб июн 01, 2013 22:24:21
Сообщений: 751
Откуда: ПФО
Рейтинг сообщения: 0
Код:
short int t;    // Переменная которую нужно конвертировать
char out[4];  // Здесь будет результат

short int tmp;
tmp=t;

out[2]=tmp%10+48;  tmp=tmp/10;
out[1]=tmp%10+48;
out[0]=tmp/10+48;

out[3]=0; // Символ конца строки

:))


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: преоборзование HEX -> BCD
СообщениеДобавлено: Чт ноя 30, 2017 07:57:50 
Друг Кота

Карма: 45
Рейтинг сообщений: -17
Зарегистрирован: Вт фев 21, 2012 13:51:55
Сообщений: 5114
Откуда: Начинающий
Рейтинг сообщения: 0
TS -балуется- занимается наукой с очередным м.к ,но при этом лениво даж "пояндексить" ... :facepalm:

Ну от конкретного м.к. конечно зависит.

Вот пример : ( "заяндексился" за 1.5минуты )
Код:
; ----------
bin2bcd2:
; ----------
; Преобразование однобайтного числа в упакованный BCD
; ----------
; Вход : R24 - число от 0 до 255
; Выход: R17:16 -  BCD представление
; Изменяет: R18, R24, SREG
; ----------

    ldi     R16, 0      ; инициализация результата
    ldi     R17, 0      ;
    ldi     R18, 8      ; счетчик циклов
loop:
    cpi     R16, 0x05   ; сравнение разряда 0
    brhs    L1          ; если <= 4,  продолжаем
    subi    R16, 256-3     ; иначе увеличиваем разряд 0 на 3
L1:
    cpi     R16, 0x50   ; сравнение разряда 1
    brcs    L2          ; если <= 4,
    subi    R16, 256-(3*16); иначе увеличиваем разряд 1 на 3
L2:
    cpi     R17, 0x05   ; сравнение разряда 2
    brhs    L3          ; если <= 4, продолжаем
    subi    R17, -3     ; иначе, увеличиваем разряд 2 на 3
L3:
    lsl     R24         ; сдвиг
    rol     R16
    rol     R17
    dec     R18         ; цикл
    brne    loop
    ret

_________________
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Чт ноя 30, 2017 08:44:58 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Если на Си, то itoa :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Чт ноя 30, 2017 09:20:23 
Встал на лапы

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн дек 08, 2014 19:45:24
Сообщений: 117
Откуда: Воронеж
Рейтинг сообщения: 0
А это что получается, обычное преобразование в BCD? Ну то легко, 8051 делить умеет.
Чего-то мне показалось что тут как-то по другому надо. Извините, затупил.

_________________
Трудное детство, стальные игрушки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Пт дек 01, 2017 09:35:13 
Друг Кота

Карма: 45
Рейтинг сообщений: -17
Зарегистрирован: Вт фев 21, 2012 13:51:55
Сообщений: 5114
Откуда: Начинающий
Рейтинг сообщения: 0
.. обычное преобразование в BCD? Ну то легко, 8051 ..
А что ж Вы сразу не сказали, что всё ещё с "*51"-ым балуетесь ?

У него ж есть DAA !
, но поелику DAA корректно работает только с аргументами менее 19910==C7h ,то сначала проверяете аргумент в Acc и если он >(19910==C7h) , то вычитаете из Acc константу (10010==64h) и инкрементируете B( там должен быть заранее 00h ) ,после чего делаете DAA ,потом XCH B ,потом ADDC 00h . В итоге у Вас в B две младшие BCD-цифры , а в Acc старшая( или 0 или 1 или 2 ) . Сравните по байтам кода и по тактам/циклам выполнения , что лучше для Вашего варианта изполнения "*51"-ого м.к. - так или с делениями.

_________________
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: преобразование HEX to DEC
СообщениеДобавлено: Пт дек 01, 2017 09:58:03 
Встал на лапы

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн дек 08, 2014 19:45:24
Сообщений: 117
Откуда: Воронеж
Рейтинг сообщения: 0
Ну да, я собственно, только им и занимаюсь.
Если берусь за какие-то другие, то это обычно, ненадолго.

Ваш способ сегодня попробую.
А мне лично делением проще
типа:
mov A, #X ; X - наш байт.
mov B, #00Ah ; - основание 10-ной системы
div AB ;поделили, остаток деления в B - младший разряд десятичного.
mov куда_ни_будь, B
mov B, #00Ah ; - результат предыдущего деления опять делится на 10
div AB ; опять поделили. В B - средний разряд, в A старший.

_________________
Трудное детство, стальные игрушки.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y