mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Switch anweißung


Autor: Mangan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man "Vorschau" drückt, ist der Anhang weg ;-)))

Autor: Mangan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok :-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich benutze immer Klammern in CASE Anweisungen.

case stunden:
  {
  .....
  }

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Frederic H. (mangan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich benutze immer Klammern in CASE Anweisungen.

> case stunden:
>   {
>   .....
>   }

Wer SO einrückt, MUSS Klammern in case-Blöcken verwenden...  :-))

Autor: Frederic H. (mangan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank für die vielen Anweisungen werde es mir merken :-)

Taste1 ist wie folgt definiert:

unsigned int Taste1 = 1;

Autor: Frederic H. (mangan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt es vieleicht daran das Taste1 als unsigned int deklariert ist und 
die anderen Variablen mit z.B #define stunden 1

Autor: Doom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau tut er denn nicht?
Hast Du schonmal versucht, statt der Variablen direkt den entsprechenden 
Wert einzusetzena?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.