Forum: Mikrocontroller und Digitale Elektronik was soll diese Anweisung sein? Bv()


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd M. (berndm)


Bewertung
0 lesenswert
nicht lesenswert
hi,
tut mir leid aber ich habe eine Anfänger Frage:

ich habe diese Anweisng gefunden und ich weiss nicht, was das bedeutet:

z.B.:

 PB7 &= ~_BV(x);
 PB7 |= _BV(x);


danke

von Mark E. (mark_e)


Bewertung
0 lesenswert
nicht lesenswert

von sechsminuszwei (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Da werden Bits gesetzt und geloescht, in Abhaengigkeit einer Funktion.

von Bernd M. (berndm)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Anrwort,

ich weiss, dass es sich um Setzen und Rücksetzen von Pins in einem Port, 
aber was ich nicht verstehe ist die Funktion  "_Bv()"
_Bv() bekommt als Argument einen Bit

z.B.

PB7 ist als Ausgang definiert, und auf 0 gestzt.
dann wird diese Anweisung aufgerufen:

PORTB &=~_Bv(PB7);

oder

PORTB |=_Bv(PB7);

wie sieht das Ergebnis in beiden Fällen??

DANKEEEE

von sechsminuszwei (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Aha. Ja, dann macht die Bv() funktion die Umwandlung von Bitposition 
nach Bitmuster :
7 --> %10000000
6 --> %01000000
..
1 --> %00000001

Nein ?

von sechsminuszwei (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nochwas. Die Bv() ist keine Laufzeitfunktion, sondern wird vom Compiler 
ausgewertet. Der Kann das ja, solange es um Konstanten geht. Die 
Uebersetzung ist eine Tabelle.

von Jörg X. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
"_BV(bit)"ist ein MACRO (beachte die GROSSSCHREIBUNG).
Ungefähr so:
#define _BV(bit) (1<<(bit))

hth. Jörg

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.