Forum: Mikrocontroller und Digitale Elektronik Total verwirrt über Code-Schnipsel


von Steffen B. (Gast)


Lesenswert?

Hallo zusammen,

ich bin gerade total verwirrt. Ich bin recht neu in der 
µC-Programmierung und sehe vor lauter Code den Wald nicht mehr.

Was bedeutet noch mal:
1
PORTD = (1<<PD1);

Schreibe eine "1" an PortD Pin 1?

Ich persönlich drücke das immer anders aus, aber ich habe hier den Code 
von einem Komolitonen, der die schreibweise wie oben nutzt.

Ich habe auf anhieb nichts gefunden, im Forum über diese Schreibweise 
und wäre froh wenn ihr Kenner das mal eben aus dem Ärmel schütteln 
würdet...

von UBoot-Stocki (Gast)


Lesenswert?


von t.b.d (Gast)


Lesenswert?

besorg dir mal ein einigermaßen gutes C buch und lese den artikel über 
bitmanipulation! ist ganz normales c, nich uc spezifisches

von Gast123 (Gast)


Lesenswert?

PORTD = (1<<PD1); bedeutet weise PortD den Wert (1<<PD1) zu (was du 
sicherlich schon weisst :-) )

(1<<PD1) bedeutet "nimm eine Eins und schiebe sie PD1 Stellen nach 
links"
PD1 muss natürlich irgendwo definiert sein und hat sicherlich den Wert 1

PORTD=(1<<PD1) = (1<<1) = 0b0000_0010

in diesem Beispiel macht das nicht sooo viel sinn, wenn man jedoch 
Kontrollregistern Werte zuweisst wird es (zugegeben erst nach einer 
Eingewöhnungsphase..) übersichtlicher..

Beispiel:
TCCRS0|=(1<<CS02) | (1<<CS00) | (1<<xyz);
(im Register TCCRS werden die Bits CS02, CS00 und xyz auf '1' gesetzt)
--> da sieht man eigentlich gleich, welche Bits gesetzt werden.. 
natürlich müssen die Bezeichner definiert werden, aber das sollte in den 
include-dateien eigentlich schon drin sein..

von Steffen B. (Gast)


Lesenswert?

Vielen Dank euch allen! Ich war etwas über die Schreibweise irritiert, 
aber jetzt kann ich mir vorstellen was gemeint ist/war. Ich muss mich 
nur noch an diese oder jene Schreibweise gewöhnen. Ist vielleicht nicht 
verkehrt, wenn man einige "Wege nach Rom" gezeigt bekommt!

Viele Grüße und vielen Dank

Steffen

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
Noch kein Account? Hier anmelden.