PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 0x04 = (1<<DDB2) Das zweite soll besser sein hab ich..



klucky
26.10.2004, 21:11
0x04 = (1<<DDB2) Das zweite soll besser sein hab ich in dem tut von www.microcontroller.net/wiki gelesen aber ich verstehe nicht wie es aufgebaut ist da es einfach nirgendwo erklärt wird ... Also kann mir jemand erklären wie das Aufgebaut ist und funktioniert? Bisher verwende ich einfach die Hexdezimalen Werte um ausgaben an die Ports zu machen ... aber wenn es das gleiche bewirkt interessiert es mich einfach was es macht ...

Gibt es evenutell einen IRC Channel zu AVR und C?

30.10.2004, 18:24
das a<<b bewirkt einfach, dass der Wert a bitweise um b nach links geschoben wird:
0001<<2 = 0100
0101<<1 = 1010
das ganze kann man mit einer Multiplikation des Wertes a mit (2^b) gleichsetzen

es gibt dann auch a>>b, was genau das Gegenteil bewirkt

ich denke, dass es egal ist, ob man den Wert in Hexadezimalzahlen oder der oben genannten Methode angibt

Pascal
30.10.2004, 18:26
Post war von mir, hab vergessen, mich einzuloggen

fzehner
30.10.2004, 21:39
ich denke, dass es egal ist, ob man den Wert in Hexadezimalzahlen oder der oben genannten Methode angibt

(1<<DDB2) zu verwenden hat den Vorteil, dass wenn man sich erst einmal an diese Schreibart gewöhnt hat, sie selbsterklärend ist und man unabhängig von der tatsächlichen Position des Register ist, wenn man einen anderen mc verwendet

Frank

Pascal
31.10.2004, 08:49
das andere ist doch auch unabhängig von der tatsächlichen Position des Registers?!
oder meinst du, dass wenn sich die Position der einzelnen Bits im Register verändert, der Wert DDB2 angepasst wird, so dass man den eigenen Code nicht mehr ändern muss?

fzehner
31.10.2004, 21:28
genau daran habe ich gedacht, wenn sich die Position des Bits im Register ändert, dann muss nur einmal DDB2 angepasst werden;