www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Menüführung; switch-case


Autor: Pat F. (breaker87)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute!

Ich habe ein kleines Problem mit meinem C-Code (CVAVR).
Im Anhang befindet sich der c-codes.
Das Problem liegt daran, dass mir das Programm immer in den 
case:Optionen einsteigt, egal, wie ich "Zustand" definiere...


lg Patrick

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aus Deinem Code:
Zustand=Optionen; 

   switch (Zustand) 
   {
     case Optionen:
Wenn Du wirklich willst, dass nicht nur der case Optionen Zweig 
ausgeführt wird, solltest Du ev. die Zuweisung Zustand = Optionen 
weglassen.
Vielleicht gehört die ja in die Initialisierung und nicht in die 
while(1) Schleife ?!

Gruß, Stefan

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist dir aufgefallen das du
"Zustand=Optionen; " in deiner while schleife stehen hast und deswegen 
auch nur optionen aufgerufen wird ?!?!

versuchs mal damit die zeile "Zustand=Optionen; " VOR deiner schleife 
stehen zu haben ...  könnte evtl klappen ... :-)

gruß
rene

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten!

Jetzt klappts...
Zumidest ohne Flankenerkennung --> dürfte dort nen Fehler drinnen 
haben...


lg Patrick

Autor: Pat F. (breaker87)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt ein neues Problem...

Wenn ich nun vom Zustand Optionen in einen Anderen wechsle, wird das 
display ständig aktualisiert...
Ich habe bereits versucht, mit einer einfachen if Anweisung das Problem 
zu lösen --> hat aber leider nicht geklappt...

Im Anhang befindet sich der neue Code...
Ich hoffe ihr könnt mir weiterhelfen...


lg Patrick

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
up --> ist sehr dringend

Autor: JoachimB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

das Display wird zu Anfang jeder case-Anweisung aktualisiert, wenn n=0 
ist.
Mit if(!n) fragst Du das ab.
Vor dem break jeder Case-Anweisung steht "n=0".
Damit endet jede case-Anweisung mit dem Auftrag, das Display mit dem 
Eintritt in die nächste case-Anweisung zu aktualisieren.

Gruß
Joachim

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das n steht aber noch vor der geschungenen klammer...

Also sollte es nur 0 gesetzt werden, wenn die else if anweisung 
ausgeführt wird, oder?
Wie könnte ich das anders lösen?


lg Patrick

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt den Fehler nach stundenlangem Suchen noch selbst gefunden...
   
  case Sprache:
         if(!n){LCD_puts(M1[lang][4], M1[lang][2]);n=1;}    
...
         else if(Enter);
         {  delay(Time);
            lang = 0;
            n=0;}    //Sprache auf Deutsch --> "0" setzten
      break;

Hab aus versehen nen ";" nach "else if(Enter) gemacht...


lg Patrick

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.