|
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