void putNyb() //
{ asm andlw 0x0F // keep lower nibble
asm addlw 0x36 // 0-9 > 0x36-0x3F, A-F > 0x40-0x45
asm btfsc _status,DC // A..F? no, skip, else
asm addlw 7 // A-F(0x40..0x45) > 'A'+6..'F'+6
asm addlw -6 // '0'..'9' or 'A'..'F'
put232(wreg); //
} //
void putHex(char data) //
{ asm swapf _data,W //
putNyb(); // send upper nibble '0'..'F'
asm movf _data,W //
putNyb(); // send lower nibble '0'..'F'
} //