mikrocontroller.net

Forum: Compiler & IDEs (1<<PB3) ???


Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bleib irgendwie bei folgendem C-Befehl hängen:

wenn ich schreibe:

PORTB |=(1<<PB3); sollte eigentlich PinB3 gesetzt werden, doch wenn ich
jetzt versuche dies "nachzurechnen":

PORTB hat z.B den Wert (binär): 00100001
PB3 ist ja binär: 00000011,
jetzt wird alles ein bit nach links geschoben, also: 00000110,

wenn man jetzt aber PortB mit dem geschobenen Wert oderverknüpft, wird
nicht nur PINB3 sondern auch PINB2 gesetzt,

welcher überlegungsfehler mach ich da?
PB3 ist ja im avr/iom8.h der Wert 3 zugewiesen und das ist nun mal
binär: 0011,

kann mir jemand auf die Sprünge helfen?!

thx.
tronic

Autor: xeho (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Ausdruck (1<<PB3) bewirkt nicht, dass PB3 um eine Stelle nach links
geshiftet wird, sondern, dass 1 um "PB3"-Stellen nach links verschoben
wird, also der gewünschte Shift um drei Stellen ...

Und nach der Oder-Verknüpfung ist dann auch PB3 auf logisch high.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port B ist       00100001
(1<<PB3)    eine 00000001 wird drei mal nach links geschoben
                 00000010  1 Mal
                 00000100  2 Mal
                 00001000  3 Mal
   jetzt wird verodert
             00100001 | 00001000 = 00101001

Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach so, danke vielmal

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.