-         

Ergebnis 1 bis 3 von 3

Thema: Fehler im Code? Optimierung nicht optimal? überfordert!

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405

    Fehler im Code? Optimierung nicht optimal? überfordert!

    Anzeige

    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:
    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
    Meine Projekte auf Youtube

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Aus der Hüfte ohne grosse Analyse: break, vergessen bei switch/case

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    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*
    Meine Projekte auf Youtube

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 25.02.2014, 13:37
  2. Code Optimierung
    Von Siro im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 19.08.2010, 23:45
  3. Fehler im Code?
    Von mtzE im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 08.05.2010, 00:40
  4. Fehler im Assembler-Code
    Von dark emporer im Forum AVR Hardwarethemen
    Antworten: 18
    Letzter Beitrag: 09.08.2005, 17:50
  5. Fehler im Code
    Von Vorobo im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 10.10.2004, 13:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •