Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: hex в символы
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
vts
нужно 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. Заранее спасибо.
megajohn
намудрили на ровном месте

пробуйте так

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
сорри, что то я мудрил, не проснулся еще....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.