Problem mit "case-Struktur"

Gast #178181
Lesenswert?

Hallo!
Habe ein Problem mit den Case-Anweisungen. Und zwar läuft das unten
stehende Programm nicht. Aber ich weiss nicht warum. Der case 0x00 wird
anscheinend abgehandelt(da die LEDS richtig leuchten). Aber wenn ich z.B
Taster0 (PINA0) betätige tut sich nichts.
Kann mir vielleicht jemand helfen?
µC = AtMega32
Compiler = AVR-GCC

MFG
Thomas

int main (void)
{
DDRA = 0x00;
DDRC = 0xFF;

for(;;)
{
inp(PINA) = Temp2;
switch (Temp2)
  {
  case 0x00:
  PORTC = 0xF0;
  break;

  case 0x01:
  PORTC = 0x01;
  break;

  case 0x02:
  PORTC = 0x04;
  break;
  }
}
}
Gast #178183
Lesenswert?

Eins vorweg: inp solltest du nicht mehr verwenden, du kannst PINA wie
eine normale Variable behandeln.


Außerdem macht:
inp(PINA) = Temp2;
ziemlich wenig Sinn. Du weist hier PINA den Wert von Temp2 zu (Temp2
ist aus mir unerfindlichen global oder gar nicht deklariert).
Du willst wahrscheinlich:
Temp2 = PINA;
switch(Temp2) { /* cases... */ }

Noch besser wäre aber das hier:
switch(PINA) { /* cases... */ }

Wie gesagt, PINA ist wie eine normale Variable zu behandeln.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren