DDRD |= (1<<PD3) | (0<<PD4)

Gast #1186384
Lesenswert?

hmm und eine kleine antwort zum Thema war zu viel?
Ich habe es leider nicht so mit der Digitaltechnik bzw mit der bitweisen 
Verknüpfung. Vielleicht kann mir jemand sagen, ob das das gleiche ist, 
wie wenn man die Bits löscht...

mfg Karl
#1186387
Lesenswert?

karl wrote:
> hmm und eine kleine antwort zum Thema war zu viel?
> Ich habe es leider nicht so mit der Digitaltechnik bzw mit der bitweisen
> Verknüpfung.

das solltest du schleunigst ändern, sonst wirst du irgendwann ganz schön 
gegen die Wand laufen..

was macht wohl ein ODER mit einer NULL ?
Moderator Persönliche Seite #1186388
Lesenswert?

karl wrote:
> Vielleicht kann mir jemand sagen, ob das das gleiche ist,
> wie wenn man die Bits löscht...

Nachdenken kann trotzdem nicht schaden:
1
DDRX|= (0 << Pxx);
heißt ausgeschrieben
1
DDRX = DDRX | (0 << Pxx);
Nun kann man eine 0 um noch so viele Bits nach links schieben: es
bleibt eine 0.  Also ist es dasselbe wie
1
DDRX = DDRX;
Ergo: nein, es geht nicht.  Bits werden mit einer UND-Verknüpfung
gelöscht,
1
DDRX &= ~(1 << Pxx);
ist also einzig die korrekte Form.
#1186405
Lesenswert?

DDRX:
00000000 Anfangszustand

was macht "(1<<3)"?:
eine 1 um 3 Stellen schieben: aus 00000001 mach 00001000

was macht "|"?:
Bitweise ODER Verknüpfen:
00000000 = DDRX
00001000 = (1<<3)
--------
00001000 = Neuer Wert von DDRX

Jetzt das ganze rückwärts:
DDRX|= (0 << Pxx)
eine 0 um 3 Stellen schieben: aus 00000000 mach 00000000

ODER Verknüpfung:
00001000 = DDRX
00000000 = (0 << Pxx)
--------
00001000 = Neuer Wert (Ist gleich dem alten!) -> Nein man kann son keine 
Bits Löschen!

Statt dessen:
Damit die Anderen Bits bleiben wird folgendes gemacht:
in 11100011 soll das 2. Bit gelöscht werden:
~(1 << 1) macht ~(00000010) = 11111101
UND Verknüpfung:
11100011
11111101 Nur beim Zu löschenden Bit steht eine 0!
--------
11100001

Hintergrund, Boolsche Algebra, hier nötig:
1 UND 0=0 sowie 1 ODER 0 = 1

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren