Hallo erfahrene Experten, könnt ihr mir bitte erklären was dieses Funktion bewirkt? uint8_t pins = (0x0F << PB0) | (1<<PB2) | (1<< PB4); Ich verstehe das so weit, dass die pins mit einem vorzeichenlosen int deklariert werden. Soweit alles ok. Was bedeutet den der erste Klammerausdruck bitte? 00001111 was wird dann mit PB0 ? und was bedeutet | das hier? oder? wie wirkt sich dieses oder bitte aus? (1<<PB2) ist mir im einzelnen schon klar, PB2 wird auf 1 gesetzt, also für sich gesehen so 0000 0100 PB4 0001 0000 was ergibt das dann mit der ersten Klammer in der Summe? so einen Ausdruck habe ich noch nie gesehen. Ich wäre Euch über Antworten sehr dankbar. Viele Grüße, MAtthias.
Matze schrieb: > Was bedeutet den der erste Klammerausdruck bitte? 00001111 was wird > dann mit PB0 ? .... nach links geschoben. a << b a wird um b binäre Stellen nach links verschoben. > und was bedeutet | das hier? oder? Ja. > wie wirkt sich dieses oder bitte aus? Die einzelnen Bits werden miteinander verodert. A B Ergebnis ----------------- 0 0 0 1 0 1 0 1 1 1 1 1 Nur halt auf die einzelnen Bits. Stell dir deine Zahlen als 8 Bits vor die schreibst du untereinander 01010101 oder 00101100 ----------- ? und jetzt wendest du für jede Spalte (=jedes Bit) die Oder-Vorschrift an. Rechts beginnend: 1 oder 0 ergibt 1 0 oder 0 ergibt 0 1 oder 1 ergibt 1 0 oder 1 ergibt 1 .... Das Ergebnis 01010101 oder 00101100 ----------- 01111101 (Im Ergbnis ist genau dort eine 1, wo entweder in der ersten Zahl oder in der zweiten Zahl eine 1 war). > > (1<<PB2) ist mir im einzelnen schon klar, PB2 wird auf 1 gesetzt, Nö. PB1 ist 1 Für PB0, PB1, PB2 ... existieren #define-ments #define PB0 0 #define PB1 1 #define PB2 2 also reine Textersetzungen. Überall dort wo du PB2 schreibst, ersetzt der Compiler (eigentlich der Präprozessor) diesen Text "PB2" durch den Text "2" Nachdem er das gemacht hat, wird aus 1 << PB2 das hier 1 << 2 > also > für sich gesehen so 0000 0100 Stimmt. Aber warum ist das so? (Das frag ich mich, weil du weiter oben nicht wusstest was << macht) > PB4 0001 0000 Nein > was ergibt das dann mit der ersten Klammer in der Summe? rechne dir die Einzelteile aus, schreib sie untereinander und odere die Bits zusammen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.