Перейти к содержанию
    

hex в символы

нужно 8-разрядное значение АЦП передать в символьном виде в аски коде. Написал две функции для старшего и младшего полубайта.

u08 CharToMSBConverter(u08 bvByte)

{

u08 a, b, c, d, e;

 

a = bvByte>>4;

b = a%10;

c = a-9*b;

d = b<<4;

e = c+d+0x30;

return e;

}

 

u08 CharToLSBConverter(u08 bvByte)

{

u08 a, b, c, d, e;

 

a = bvByte&0x0f;

b = a%10;

c = a-9*b;

d = b<<4;

e = c+d+0x30;

return e;

но принимающая сторона это не понимает, а когда передаю непосредственно символами то все нормально. Подскажите в чем я ошибся, на бумаге вроде все правильно. Пишу в IAR для ATmega32. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

намудрили на ровном месте

 

пробуйте так

 

u8 src = 0x12;

u8 dst[2];

 

dst[0] = bin2asciihex( src >> 4 );

dst[1] = bin2asciihex( src & 0x0F );

 

//------------------------------------------------------------------------------

u8fast bin2asciihex( u8fast bin )

{

if( bin > 9 )

return( bin + 'A' - 10 );

else

return( bin + '0' );

}

 

и для принимающей стороны

 

//------------------------------------------------------------------------------

u8fast asciihex2bin( u8fast hex )

{

if( hex >= 'A' )

return( hex - 'A' + 10 );

else

return( hex - '0' );

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Э-э-э-э....

Что-то Вы намудрили...

// Преобразование числа 0-15 в шестнадцатиричный символ
char BinToHex(char B)
{
  static char * Symbol= "0123456789ABCDEF";
  return Symbol[B & 0x0F];
}

........
  printf("%c%c\n",  BinToHex(Byte >> 4), BinToHex(Byte & 0x0F));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сорри, что то я мудрил, не проснулся еще....

Изменено пользователем alexeyv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...