PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Fehler im Code? Optimierung nicht optimal? überfordert!



erik_wolfram
30.03.2011, 17:10
Hallo, ich bin ganzschön am Grübeln... irgendwie bekomme ich einen Code-Ausschnitt eines weitaus komplexeren Codes nicht zu laufen, der Rest funktioniert mittlerweile Prtoblemlos.

Leider kann ich den Fehler nicht sehen, nun habe ich mich bezüglich der Optimierung bei GCC belesen, einiges probiert, aber es funktioniert noch immer nich...

Hier der Code:


if ( !(PIN_UP & (1 << PAD_UP)) || !(PIN_DOWN & (1 << PAD_DOWN)))
{
mode = 0;

while (PIN_CE & (1 << PAD_CE)) // Taste für Abbruch
{
if (!(PIN_UP & (1 << PAD_UP)) || !(PIN_DOWN & (1 << PAD_DOWN)))
{
mode = 1 - mode;
while (!(PIN_UP & (1 << PAD_UP)) || !(PIN_DOWN & (1 << PAD_DOWN))) {_delay_ms (1);} // Loslassen abwarten

switch (mode)
{
case 0:

lcd_clrscr ();
lcd_puts ("Menu2");


case 1:
lcd_clrscr ();
lcd_puts ("Menu1");

}

_delay_ms (50);
}


if (!(PIN_OK & (1 << PAD_OK)))
{
while (!(PIN_OK & (1 << PAD_OK))) {_delay_ms (1);} // Loslassen abwarten

switch (mode)
{
case 0:

Menu1 ();
case 1:
Menu2 ();
}
_delay_ms (50);
}

_delay_ms (1);
}

lcd_clrscr ();
}


Ich bin mir sicher, dass man den Code besser schreiben kann, weis aber leider nicht wie...

Aufgabe des Codes ist es, über eine Hoch- und Runter-Taste Menüs anzuwählen und auszuführen. Daneben ist eine Taste für Bestätigen ("OK") und eine für Abbruch ("CE").

VLt. könnte mal jemand den Code überfliegen und mir einen Hinweis geben?

MFG erik

radbruch
30.03.2011, 17:19
Aus der Hüfte ohne grosse Analyse: break, vergessen bei switch/case

erik_wolfram
30.03.2011, 17:27
Dankeschön! ... hab vor lauter Bäumen den Wald nicht mehr gesehen.

Natürlich habe ich im Rest des Code immer break verwendet ... nur da nicht.... *schäm*