PROZESSOR = 18F87K90
Microchip C18 Compiler.

Code:
char i_help;

union reg
{
      char data;
      struct
      {
          char ek            : 2;  //Elektrodenkontrolle
          char sprache    : 1;  //Sprachauswahl
          char TK              : 1;
           char Temp_Sens     : 1; 
           char rx_enable     : 1; 
          char RT2025        : 1;
          char calfail       : 1;
      };
};
union reg reg0;

  reg0.ek = 0x00;  // Geht
  reg0.ek = 0x01;  // Geht
  reg0.ek = 0x02;  // Geht nicht richtig
  reg0.ek = 0x03;  // Geht nicht richtig

  switch (reg0.ek) {
      case 0x00 :  Do1;  // Geht
      break;
      case 0x01 :  Do2;  // Get
      break;
      case 0x02 :  Do3;  // Get nicht
      break;
      case 0x03 :  Do4;  // Get nicht
      break;
      default   :  DoMist; // Hier lande ich bei 0x02 und 0x03
      break;
  }
So nun hab ich folgendes kleines Problem. Wieso geht das nicht ??
reg0.ek ist ja 2 Bit breit, womit es insgesammt 4 zustände annehmen kann.
Ich kenn jedoch nur die zustände 0x00 und 0x01 auswerten, 0x02 und 0x03 bekomme ich nie ausgewertet.
Wenn ich reg0.ek einen anderen wert als 0x00 oder 0x01 zuweise, lnde ich immer in DoMist.

Habe ich irgendwo einen Denkfehler?

Der Debugger meldet mir in reg0.ek immer den richtigen wert.