www.mikrocontroller.net

Forum: Compiler & IDEs switch Problem


Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

warum funktioniert der folgende Code nicht. Also mit nicht funktionieren 
meine ich, das in keine case-Anweisung gesprungen wird.

char byte_1;

...

switch(byte_1)
{
case 0x10:LED = 1;
break;

case 0x20:LED = 1;
break;

default: LED = 1;
}

Die LED geht nie an. Warum?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute, die LED ist kaputt xD

Zeig mal den kompletten Code, der Ausschnitt bringt nicht viel.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder falschrum reingesetzt,
oder nicht gegen Masse sondern +5V gelegt,
...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht optimiert der compiler es ja zu

 LED = 1;


damit gibt es kein switch mehr.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NE die LED funktioniert bestens mit LED = 0; und LED = 1;
Das ist nicht das Problem. Ich dachte das ich evtl. nen Fehler in der 
switch-Anweisung habe, evtl mit char und 0x10 oder so.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wird vielleicht das switch gar nicht erreicht, oder die LED gleich 
danach zu 0 gesetzt.

Die paar Zeilen oben jedenfalls sehen nicht verdächtig aus und
machen dasselbe wie LED=1.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na der Fehler is doch offensichtlich! Schau dir mal Zeile 42 genauer an.

Autor: Magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Laubnitz schrieb:
> switch(byte_1)
> {
> case 0x10:LED = 1;
> break;
> case 0x20:LED = 1;
> break;
> default: LED = 1;
> }
>
> Die LED geht nie an. Warum?

Unabhängig davon, welchen Wert "byte_1" hat, wird mit deinem Code der 
Variable "LED" immer der Wert "1" zugewiesen.

Gruß,
Magnetus

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok lassen wir das an dieser Stelle. Ich poste morgen mal den gesamten 
Code. Sorry aber ich habe ihn heute nicht da.
Vielen Dank für die ersten Tips

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.