PROZESSOR = 18F87K90
Microchip C18 Compiler.
So nun hab ich folgendes kleines Problem. Wieso geht das nicht ??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; }
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.







Zitieren

Lesezeichen