mikrocontroller.net

Forum: Compiler & IDEs Basisproblem


Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß es ist peinlich aber ich komme trotzdem nicht weiter.

Aus einem der hilfreichen Foren:


Prüfen von Registerinhalten:
if (UDR & (0xF3))    //wenn UDR-Register UND 0xF3 nicht 0 sind ...
if (!(UDR & (0xF3)))    //wenn UDR-Register UND 0xF3  0 sind ...

Frage:
Wenn UDR den Inhalt 0x3F hätte, wäre das Ergebnis von UDR & (0xF3) dann
1 oder 0? bzw, wenn es 1 wäre, was wäre es dann, wenn UDR != 0xF3? Gibt
es dabei zwangsläufig nur 0?

Ist die Ergebnisprüfung auf 1 und 0 gleichzusetzten mit true und false,
wobei true 1 und false 0 entspricht?

Wenn die Ergebnisprüfung auf 1 und 0 hinausläuft ist es dann so zu
verstehen dass also auch if(0x10 - x) ... abgearbeitet werden würde,
wenn x = 0x0F wäre???

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Ausdruck (UDR & 0xf3)  (die zusätzlichen Klammern um die Konstante
0xf3 kann man getrost weglassen) ist eine bitweise AND-Verknüpfung
beider Operanden. Das Ergebnis davon ist true, wenn auch nur ein
einziges Bit des Resultats gesetzt ist.

0xf3 = 11110011

Damit ist der Ausdruck auch dann true, wenn UDR == 1.

Er ist nur dann false, wenn keines der in 0xf3 gesetzten Bits in UDR
gesetzt ist.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zweiter Anlauf.
Wie bekomme ich raus, ob in UDR 0x0d drin ist? Wenn UDR == 0x0d geht
scheinbar nicht, oder es gibt bei mir noch mehr Fehler.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if (UDR == 0x0d) geht im Prinzip schon, aber bedenke: jedes Lesen von
UDR will ein Zeichen aus dem UART-Puffer lesen.  's ist halt ein
IO-Register und keine gewöhnliche Variable...

Was man normalerweise daher tut: warten, bis der UART-Status anzeigt,
dass wirklich ein Zeichen verfügbar ist.

Einlesen von UDR in eine interne Variable.

Diese Variable weiter auswerten (mit 0x0d vergleichen etc. pp.).

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.