www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kurze Frage zu Bitoperatoren...


Autor: Helge Böhr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Bedeutet eigentlich bei der C-Programmierung unter Codevision
PORTA &= 0xfO das selbige wie PORTA |= 0x0f ?

Autor: david reiher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein tut es nicht

&=0xf0 ist eine AND verknüpfung mit 0b11110000
wärend
|=0x0f eine OR verknüpfung mit 0b00001111 ist.

Autor: Helge Böhr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist dann PORTA = 0xf0 dasselbe, wie PORTA &= 0xf0 ?

Autor: david reiher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin kein spezialist für deinen uC aber in C ist ein = eine
wertzuweisung

PORTA=0xf0 setzt die Bitfolge 0b11110000
PORTA&=0xf0 steht hingegen für PORTA=PORTA&0xf0

& ist eine bitweise AND verknüpfung, was die jedoch mit deinem PORTA
macht müsste mal jemand bewerten der den uC programmiert

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es holt den aktuellen Wert von PORTA (*), macht
damit die UND-Verknüpfung mit 0xF0 und schreibt
das Ergebnis wieder zurück zum PORTA. Also genau
das was da steht:
   PORTA &= 0xF0;


(*) Ist der PORTA als Ausgang gesetzt, dann handelt
    es sich dabei um den zuletzt auf PORTA geschriebenen Wert
    Ist der PORTA hingegen als Eingang definiert worden,
    dann ist der Wert der Zustand der Pull-Up Widerstände.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Helge

Deine Fragen, kannst du dir ganz leicht selbst beantworten,
indem du das ganze einfach ausprobierst. Vorausgesetzt
natürlich, du weist was die Operationen an sich machen :-)
Wenn du dieses Wissen nicht hast, dann empfehle ich dir
mal ein Buch über C zu lesen. Das ist dann eigentlich
fehlendes Grundlagenwissen.

Konkret:

Angenommen am PORTA liegt der Zustand 0b10101010 an.

PORTA & 0xF0 <==>     0b10101010
                    & 0b11110000
                     -----------
                      0b10100000

PORTA | 0x0F <==>     0b10101010
                    | 0b00001111
                     -----------
                      0b10101111

PORTA = 0x0F          0b10101010
                    = 0b00001111 (Zuweisung)
                     -----------
                      0b00001111

Für & und | einfach bitweise die UND bzw. ODER Verknüpfung
machen.

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zum µC: PORTA, PINA und DDRA sind die Register des PORT A. Wenn PORTA
beschrieben wurde bleibt der Inhalt bis zum nächsten Beschreiben wie er
ist (außer Sonderfunktionen wie z.B UART sind aktiv). PINA kann nur
gelesen werden und gibt den Zustand der PORTA - Pins wieder. Für DDRA
(Datenrichtungsregister A) gilt dasselbe wie bei PORTA.

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.