Hallo, Wenn ich einselne Bits eines Registers beschrieben möchte, dann mach ich es bisher immer so: PORTD = (1<<1)|(0<<2)|(0<<3)|(1<<4)|(0<<5)|(1<<6)|(1<<7); gibt es eine einfachere Möglcihkeit? z.b. PORTD = Binär(1001011) ??? Gruß Johannes!
>gibt es eine einfachere Möglcihkeit?
ja, diese:
1 | PORTD = 0b1001011; |
Die ist zwar einfacher, aber schlechter lesbarer. Bleibe lieber bei obiger Klammernkonstruktion!
>Die ist zwar einfacher, aber schlechter lesbarer. Bleibe lieber bei >obiger Klammernkonstruktion! Die würde ich dann aber noch etwas lesbarer gestalten, z. B.: PORTD = 1 << PD2; Das macht bei einem Portregister noch nichts, aber wenn es an Timerregister o. ä. geht ist es hilfreicher. MW
Noch ein Hinweis:
1 | PORTD = 0b1001011; |
Hier kommt das höchste Bit IMMER zuerst!
Da gibt es tausend Möglichkeiten ein Byte zu beschreiben, aber das ist sicher eine der am wenigsten schönen: >PORTD = (1<<1)|(0<<2)|(0<<3)|(1<<4)|(0<<5)|(1<<6)|(1<<7); - vor lauter Sonderzeichen sieht man die eigentliche Information nicht - einzelne Bits (Bit 0) sind ausgelassen (und damit implizit 0) - die Reihenfolge der Bits entspricht nicht der üblichen Leserichtung >PORTD = (1<<7)|(1<<6)|(1<<4)|(1<<1); ist das gleiche >PORTD = 0b11010010; ist das gleiche >PORTD = 0xD2; ist das gleiche und jedes Mal schneller lesbar. Ich bevorzuge bei solchen statischen Zuweisungen die Hex-Schreibweise, das muss man auch nur 1 mal lernen, danach kann man sich Bitkombinationen viel leichter merken ;-)
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.