Hallo, folgendes Problem seit dem ich in meinem Code die switch anweißung drinnen habe macht der Mikrocontroller leider nicht mehr das was er soll. Vorher hatte ich alles mit If anweißungen realisiert funktionierte auch möchte aber die switch anweißung verwenden. Vieleicht sieht ihr wo ich einen Fehler gemacht habe. Mikrocontroller ist der Atmega88. Achja im debug modus vom AVR Studio tritt kein Fehler auf!
Anhand des Codeschnipsels ist nichts auffälliges zu erkennen. Wird "Taste1" irgendwo initialisiert? Wird der Wert auch irgendwann zurückgesetzt? - Übrigens wird "anweisen" mit einem weichen 's' gesprochen, also auch die davon abgeleitete "Anweisung". Die Ligatur 'ß' ("sz") wird aber nur dort verwendet, wo ein scharfes 's' einem gedehnt gesprochenen Vokal folgt.
Lars wrote: > Hallo, > > ich benutze immer Klammern in CASE Anweisungen. Musst Du aber nicht. Kann vielleicht die Übersichtlichkeit erhöhen, ist aber programmtechnisch völlig wirkungslos.
Die Klammern sind nicht ganz wirkungslos; man könnte in ihnen Variablen deklarieren, die ihren Gültigkeitsbereich innerhalb des von den Klammern gebildeten Codeblocks haben. Schön ist so ein Programmierstil aber nicht.
Also die Taste 1 wird initialisiert mit 1. Zurückgesetzt wird sie auch. @Lars mit Klammern hatte ich schon versucht hat leider nicht geholfen! Wie schon gesagt mache ich lauter If abfragen funktionierts! Deswegen weiß ich auch nicht mehr weiter.
1. Bei default fehlt noch ein Break; sollte aber nichts ausmachen. 2. Sorry, aber Anweisung schreibt man mit normalen "s" - du willst die Anweisung ja schließlich nicht "Anbeißen" ;-) Wie ist Taste1 denn definiert? Bestens, Thomas
> ich benutze immer Klammern in CASE Anweisungen. > case stunden: > { > ..... > } Wer SO einrückt, MUSS Klammern in case-Blöcken verwenden... :-))
Vielen dank für die vielen Anweisungen werde es mir merken :-) Taste1 ist wie folgt definiert: unsigned int Taste1 = 1;
Liegt es vieleicht daran das Taste1 als unsigned int deklariert ist und die anderen Variablen mit z.B #define stunden 1
Was genau tut er denn nicht? Hast Du schonmal versucht, statt der Variablen direkt den entsprechenden Wert einzusetzena?
Mangan wrote: > Vorher hatte ich alles mit If anweißungen realisiert funktionierte > auch möchte aber die switch anweißung verwenden. Vieleicht sieht ihr wo > ich einen Fehler gemacht habe. An dem Schnipselchen ist nichts auffälliges. Der Fehler liegt also woanders. Es kann leicht mal passieren, daß man etwas umschreibt und dann ist die logische Funktion eine völlig andere. Peter
Frederic H. wrote: > Liegt es vieleicht daran das Taste1 als unsigned int deklariert ist und > die anderen Variablen mit z.B #define stunden 1 Mit #define werden keine Variablen definiert! Das ist nur eine Textersetzung (auch "Makro" genannt) durch den Präprozessor! "stunden" ist für den Compiler eine reine Zahl (nämlich eine "1"), nichts weiter.
Rufus t. Firefly wrote: > Übrigens wird "anweisen" mit einem weichen 's' gesprochen, also auch die > davon abgeleitete "Anweisung". > Die Ligatur 'ß' ("sz") wird aber nur dort verwendet, wo ein scharfes 's' > einem gedehnt gesprochenen Vokal folgt. Und ich hatte mich schon gewundert, warum jemand seine Schalter weiß anmalen (anweißen) will :-) Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.