Frage zur Verwendung des _BV() Makros

Gast #180322
Hallo Leute,

mit dem _BV(blah) Makro kann ich ja prima bits setzen:

z.B. TCCR2 = _BV(COM20)|_BV(CTC2)|_BV(CS20);

... aber wie lösche ich denn genauso "elegant" ein einzelnes Bit ?

     TCCR2 &= !_BV(COM20) ;

?!? oder irgendwie besser / anders ?

Grüße,

Stefan
Gast
Doch, die _BV() Schreibweise passt schon, man soll nicht mehr sbi und
cbi verwenden.
Durch die _BV Operationen bleibt es dem Compiler beim optimieren
überlassen ob er ein Byte ins Port schreibt oder sbi verwendet, je
nachdem was schneller ist.
Gast
BV gibt's nicht mehr, _BV schon.

Nicht verwenden sollte man den Makro nur dann, wenn man Wert auf
Codeportabilität legt, da andere Compiler/Bibliotheken ihn nicht
haben.

Aber er ist in der Tat nichts weiter als ein (1 << (x)), der Code
sieht nur ein wenig lesbarer aus mit dem Makro.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.