Das ist eine Routine nur zum Verständnis. davon geht vieles besser und kürzer.
Code:
unsigned uint32_t  Data; 
char ink;
Data = 0;   // initialize


one-data-in:
         ink = UDR;
        Data <<= 4;         
         switch (ink)
        {
        case 13:      break;   // <RETURN> fertig
        case 'A':      Data |= 0x0A;    break;      
        case 'B'       Data |= 0x0B;    break;      
        case 'C':      Data |= 0x0C;    break;       
        case 'D':      Data |= 0x0D;    break;       
        case 'E':      Data |= 0x0E;    break;       
        case 'F':      Data |= 0x0F;    break;       
        case '0':      Data |= 0x00;    break;       
        case '1':      Data |= 0x01;    break;       
    ..................
        case '9':      Data |= 0x09;    break;       
       default:                                break;