DDRB = 8|16 was ist damit gemeint

Gast #4507695
Lesenswert?
• ▲
▼
Frank schrieb:
> wie muss ich diese Codezeile verstehen? ich verwende immer Binär oder Hex.

Sie ist gleichbedeutend mit:
1
DDRB = 0x8|0x10;

> Das scheint eine weitere Variante zu sein.

Ja, dezimal ist eine weitere Variante, Zahlen in C anzugeben. Aber wo 
ist jetzt das Problem? Du wirst doch wissen, wie das Dezimalsystem 
funktioniert.
#4507702
Lesenswert?
• ▲
▼
Vielleicht lernt der TE ja noch. Am Einfachsten ist es, sich mal die 
Darstellung in anderen Zahlensystemen anzusehen. Hexadezimal hatten wir 
oben schon. Viel deutlicher wird das dann so:
1
DDRB = 2^3 | 2^4;
oder
1
DDRB = (1<<3) | (1<<4);

Da sieht man dann direkt, welche Pins als Ausgang gesetzt werden.
Gast #4507712
Lesenswert?
• ▲
▼
Dirk K. schrieb:
> Vielleicht lernt der TE ja noch. Am Einfachsten ist es, sich mal die
> Darstellung in anderen Zahlensystemen anzusehen. Hexadezimal hatten wir
> oben schon. Viel deutlicher wird das dann so:
>
1
DDRB = 2^3 | 2^4;
> oder
>
1
DDRB = (1<<3) | (1<<4);
>
> Da sieht man dann direkt, welche Pins als Ausgang gesetzt werden.

Bei '2^3' und '2^4' bist du dir sicher? ;-)
#4507715
Lesenswert?
• ▲
▼
Gib das mal in deinen Taschenrechner ein. Das Ergebnis ist verblüffend! 
;)

Im Programm würde ich so einen Quatsch aber nicht schreiben, sondern die 
SHL-Variante nehmen. Weil die ganz offensichtlich einfacher zu rechnen 
ist von einem binären Prozessor - eben simpelstes Shift Left.
Gast #4507743
Lesenswert?
• ▲
▼
Dirk K. schrieb:
> Im Programm würde ich so einen Quatsch aber nicht schreiben, sondern die
> SHL-Variante nehmen. Weil die ganz offensichtlich einfacher zu rechnen
> ist von einem binären Prozessor - eben simpelstes Shift Left.

Selbst wenn das Ergebnis von 2^3 auf dem Taschenrechner irgendwas mit 
dem ^-Operator in C zu tun hätte, wäre diese Aussage falsch.
Gast #4507875
Lesenswert?
• ▲
▼
> DDRB = 8 | 16

Bedeutet: Setze das DDRB Register auf den Wert 8 oder 16 :-)

Spass Beiseite, die beiden Zahlen werden mit der binären ODER Funktion 
verknüpft. In diesem Fall ergibt das den Wert 24. Es werden zwei Bits 
gesetzt, die anderen werden gelöscht.
1
8  -> 00001000
2
16 -> 00010000
3
==============
4
      00011000 = 24

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