mikrocontroller.net

Forum: Compiler & IDEs Was macht folgender Ausdruck:


Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if( PIND & 1<< PD6 ){ ...

1.) Zustände von PortD werden eingelesen (z. B. 0b0100 0000)
2.) UND-Verknüpfung von 1.) mit 0b0000 0001 = 0b0000 0000
3.) Das Ergebnis aus 2.) wird nach logisch links geschoben um den Wert 
von PD6

Ist das Ergebnis nicht immer 0, sofern nicht PIND0 = 1 ist??? Helft mir 
mal bitte.

Markus

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was macht
if( PIND & (1<< PD6) ){ ...

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, der schiebe-operator "<<" hat eine höhere priorität als das 
bitweise und "&" !!!
somit:
1.) Zustände von PortD werden eingelesen (z. B. 0b0100 0000)
2.) die "1" wird um "PD6" nach links geschoben 0b0000 0001 = 0b0100 0000
3.) Die resultate werden bitweise verUNDet..

if ist "true" wenn Bit nummer "PD6" im "PIND" high-level aufweist, 
ansonsten "false"

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if( PIND & (1<< PD6) ){

^^

macht somit das gleiche, wie das obere von markus!

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prüfen ob PD6 gesetzt ist, klar. Hier ist der Ausdruck zum prüfen ja in 
extra klammern.
Bei meinem Beispiel waren die Klammern halt expliziet nicht gesetzt, 
oder hat hier das 1<<PD6 Vorrang vor dem PIND & Ausdruck?

Wahrscheinlich denke ich nur wieder viel zu kompliziert...

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
^^habe ich doch schon beantwortet :(

nein, der schiebe-operator "<<" hat eine höhere priorität als das
bitweise und "&" !!!

Autor: Markus _neu (markush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, habs schon gesehen, danke. War zu langsam! :)

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.