mikrocontroller.net

Forum: Compiler & IDEs Problem mit einer for-Schleife


Autor: Gilles R. (roodemol)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe ein kleines Problem mit einer for Schleife.

/* Schleife 1 */
for(;;(PINA & (1 << EinP)))
{
  PORTA |= (1 << LED);
}


/* Schleife 2 */
for(;;)
{
  if(PINA & (1 << EinP)) break;
  PORTA |= (1 << LED);
}

Beide Schleifen müssten doch das Gleiche tun, allerdings wird bei der 1
nur eine Endlosschleife übersetzt in der die LED immer wieder
eingeschaltet wird und es wird nie geprüft ob EinP noch 1 ist.

Ich setze die neueste Version von WinAVR ein.

Autor: Gilles R. (roodemol)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verbesserung:

/* Schleife 1 */
for(;;(PINA & (1 << EinP))==0)
{
  PORTA |= (1 << LED);
}

Problem weiterhin vorhanden.

Autor: Irgwer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig:

/* Schleife 1 */
for(;(PINA & (1 << EinP))==0;)
{
  PORTA |= (1 << LED);
}

oder

/* Schleife 1 */
for(;!(PINA & (1 << EinP));)
{
  PORTA |= (1 << LED);
}

Autor: Gilles R. (roodemol)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hätte eigentlich selbst drauf kommen müssen, dass die
Abbruchbedingung in die Mitte kommt.

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.