А вот для любого до 8 байт:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Сергей Борщ 20 мая 2004 г. 12:33
В ответ на: Ответ: (+) отправлено sdfg 20 мая 2004 г. 11:20


static __flash char HEXConvert[]="0123456789ABCDEF";

#define _Lead (1<<6) // print one space before number
#define _Trail (1<<5) // print one space after number
#define Space() putchar(' ')

void putHEX(unsigned long Value, unsigned char Digits) {
unsigned char *c;
unsigned char Tmp = Digits & _Trail;
if(Digits&_Lead) Space();
Digits &= ~(_Trail|_Lead);
c=(unsigned char *)&Value+((Digits-1)>>1); //ptr to highest byte
if(Digits&1) Value<<=4;
do {
putchar(HEXConvert[(((*c)&0xF0)>>4)]);
Value<<=4;
} while(--Digits);
if(Tmp) Space();
}

вызывать так:
unsigned Variable = 0x1234;
putHEX(Variable,4|_Lead|_Trail); // напечатать Variable, 4 знака, пробел до и после.


для байта можно сделать так:

void CharToHEX(unsigned char Value) {
putchar(HEXConvert[c>>4]);
putchar(HEXConvert[c&0x0F]);
}


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

Ответы



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

E-mail: info@telesys.ru