erik_wolfram
30.03.2011, 18: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
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