Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Преобразовать упакованный 5-ти символьный ВСВ в 16BIN
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
ILYAUL
Всем доброй ночи!

Коллеги , никто не писал такой преобразователь. Поделитесь , а то как-то мыслей никаких. smile3046.gif
Спасибо!!
_Артём_
Цитата(ILYAUL @ Apr 2 2012, 00:44) *
Всем доброй ночи!

Коллеги , никто не писал такой преобразователь. Поделитесь , а то как-то мыслей никаких. smile3046.gif
Спасибо!!


Код
unsigned char bcd[5];
__flash unsigned short dec[5]={1, 10, 100, 1000, 10000};
unsigned short BcdToBin(unsigned char *bcd_ptr)
{
    unsigned short bin=0;
    
    for (i=0; i<5; i++)
        bin+=dec[i]*bcd_ptr[i];

    return bin;
}

Подойдёт?
ILYAUL
Артём, спасибо большое!
Код , конечно не пропадёт , переписал его в свою записную книжку. Но прект на asm.

Я конечно перелопатил извесный APP AVR204 сохранив оригинальные названия ,но убрав "лишнее" под MEGA, но как-то, какой-то завершённости не хватает. И мысли пока кончились.

Код
ldi  MUL_TEN,10
BCD2BIN16:
;/Перевод упакованного  5 символьного ВСD в 16 BIN

  andi fBCD2,0x0F
  clr  TbinH
  mov  tBINL,fBCD2
  mov  adder,fBCD1
  rcall mul10a
  mov  adder,fBCD1
  rcall mul10b
  mov  adder,fBCD0
  rcall mul10a
  mov  adder,fBCD0
  rcall mul10b
check: rjmp check

mul10a:
   swap adder
mul10b:
  mul  tbinH,MUL_TEN
   mov  tbinH,R0
  mul  tBINL,MUL_TEN
   mov  tbinL,R0
  add  tbinH,R1
  andi adder,0x0F
  add  tBINL,adder
  brcc m10_1
  inc  tBINH
m10_1:
ret


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.