Abfrage von Bits in Register

Gast #2014431
Lesenswert?
• ▲
▼
Um zu sagen ob diese beiden Zeilen gleichwertig, oder wenigstens korrekt 
sind, benötige ich mehr Informationen. Ohne weitere Informationen, wie 
diese Masken aussehen, würde ich sogar raten, dass es "if(IRQ_MASK & 
RX_START_EN)" heißen müsste.
Gast #2014632
Lesenswert?
• ▲
▼
Großes Fragezeichen schrieb:
> Das Bit RX_START_EN befindet sich im Register IRQ_MASK.

Wenn RX_START_EN nur eine Bitnummer ist, dann solltest du dieses Macro 
verwenden, um eine 1 an die richtige Stelle zu schieben. Mit einem AND 
kann man dann einfach abfragen, ob das entsprechende Bit gesetzt ist

if(IRQ_MASK & (1 << RX_START_EN))

Wenn RX_START_EN eine Bitmaske ist, dann entfällt natürlich das shiften.

if(IRQ_MASK & RX_START_EN)

Eine weitere Möglichkeit wäre auch, dass RX_START_EN ein Makro ist, 
welches direkt das richtige Bit extrahiert. In diesem Fall fällt sogar 
die Verknüfung it IRQ_MASK weg.

if(RX_START_EN)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.