Mit dem befehl : DDRB = 255; sind alle Bits im Port B auf Ausgang gestellt, richtig ? Wie setze ich alle bits auf 0? (Das klappt nicht: #define MEINBIT0 0 #define MEINBIT1 1 #define MEINBIT2 2 #define MEINBIT3 3 #define MEINBIT4 4 #define MEINBIT5 5 #define MEINBIT6 6 #define MEINBIT7 7 PORTB |= ((0 << MEINBIT0) | (0 << MEINBIT1)) | (0 << MEINBIT2)) | (0 << MEINBIT3)) | (0 << MEINBIT4)) | (0 << MEINBIT5)) | (0 << MEINBIT6)) | (0 << MEINBIT7)); LG
1 | PORTB = 0; |
oder
1 | PORTB &= ~(1 << MEINBIT0) & ~(1 << MEINBIT1) & ... & ~(1 << MEINBIT7); |
Weiterführende Literatur: Bitmanipulation
timm schrieb: > DDRB = 255; sind alle Bits im Port B auf Ausgang gestellt, richtig ? > > Wie setze ich alle bits auf 0? DDRB = 0;
Max H. schrieb: >
1 | PORTB = 0; |
> oder >
1 | PORTB &= ~(1 << MEINBIT0) & ~(1 << MEINBIT1) & ... & ~(1 << MEINBIT7); |
Das ist aber äquivalent zu:
1 | PORTB &= ~((1 << MEINBIT0) | (1 << MEINBIT1) | ... | (1 << MEINBIT7)); |
und ist damit von der Schreibweise viel näher an dem obigen Versuch des TOs. Bits setzen: PORTX |= MASKE; Bits löschen: PORTX &= ~MASKE;
@timm (Gast) > PORTB |= ((0 << MEINBIT0) | (0 << MEINBIT1)) | (0 << MEINBIT2)) | (0 ><< MEINBIT3)) | (0 << MEINBIT4)) | (0 << MEINBIT5)) | (0 << MEINBIT6)) | >(0 << MEINBIT7)); Wie kommst du auf die Idee, eine 0 zu schieben? Mit einer 1 geht das deutlich besser.
timm schrieb: > PORTB |= ((0 << MEINBIT0) | (0 << MEINBIT1)) | (0 << MEINBIT2)) | (0 > << MEINBIT3)) | (0 << MEINBIT4)) | (0 << MEINBIT5)) | (0 << MEINBIT6)) | > (0 << MEINBIT7)); Was ist bloß heute los? Kann denn hier keiner mehr denken? Also: Was wird wohl passieren, wenn man schreibt Ergebnis = Ergebnis or 0 or 0 or 0 ..usw. ?? Hei? Ist das Beherrschen der allereinfachsten logischen Verknüpfungen denn nicht mehr en vogue? W.S.
npn schrieb: > timm schrieb: >> DDRB = 255; sind alle Bits im Port B auf Ausgang gestellt, richtig ? >> >> Wie setze ich alle bits auf 0? > > DDRB = 0; Korrekt. Allerdings denke ich nicht das diese Frage ernst gemeint war. Außer man hat einen IQ von 10...
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.