DDRB = 8|16 was ist damit gemeint

Gast
Frank schrieb:
> wie muss ich diese Codezeile verstehen?
>
>
> ich verwende immer Binär oder Hex. Das scheint eine weitere Variante zu
> sein.

Kümmer dich mal mehr um dezimal. Bissl ausführlicher als in deinen 
Beiträgen.
Gast
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.
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
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? ;-)
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
Dirk K. schrieb:
> Gib das mal in deinen Taschenrechner ein. Das Ergebnis ist verblüffend!
> ;)

Nicht ablenken! Da ein Taschenrechner nur extrem selten ein Data 
Direction Register auf dem Tastenfeld hat, ist das zwar eine schöne 
Ausrede, mehr aber auch nicht. ;-)
Gast
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
> 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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.