begriffserklärung

OP #345627
Lesenswert?

kann mir jemand ich kurzform bitte folgende sachen erklären:

1. Frage:
DDRC = (1 << DDC2) | (1 << DDC3)  // portc pin 2 und 3 als eingang
definieren
WIE DEFINIERE ICH DIE ALS AUSGANG (DDRC = (0 << DDC2) | (0 << DDC3))

2. Frage:
wie funktioniert eine while schleife


mfg helli
#345630
Lesenswert?

zu 1)
Nein. So geht das nicht.
Der springende Punkt ist, dass eine 1 an einer Bit-
position den entsprechenden Pin als Eingang beschaltet
und eine 0 dementsprechend als Ausgang. Alles was du nicht
explizit mit 1 setzt ist sowieso automatisch 0.
d.h. in
DDRC = (1 << DDC2) | (1 << DDC3)
wird das Bit #2 und Bit #3 auf 1 gesetzt. Alle anderen Bits
sind damit 0 -> #2 und #3 sind Eingang, alle anderen sind
Ausgang.

2)
da klinke ich mich jetzt aus. Das ist C Grundlagenwissen das
in jedem noch so schlechtem Lehrbuch enthalten ist.
Ohne dieses Wissen solltest du nicht versuchen einen µC zu
programmieren. Das kann nur schief gehen. Versuch deine ersten
Schritte in C besser auf einem PC. Da gibt es viel bessere
Möglichkeiten rauszufinden warum ein Programm nicht funktioniert
und du musst dich auch am Anfang nicht um die absoluten low-level
Dinge kümmern um die du bei einem µC nicht herumkommst.
Zur Erklärung: Deine Frage ist äquivalent zu:
  Ich möchte an meinem Motor dìe Kolberückzugsfeder wechseln. Wie
  rum muss ich meinen Schraubenzieher halten?
#345633
Lesenswert?

Also nochmal eine Zusammenfassung:
1. Eine "1" im DDRx bedeutet Ausgang, eine 0 bedeutet eingang. Daher
hast du das oben verdreht.
2. Eine while schleife wird so lange durchlaufen bis die Bedingung in
der Klammer nicht mehr erfüllt ist, oder sie durch ein "break;"
verlassen wird. Bsp:
1
a = 0;
2
b = 5;
3
while(a < b){
4
  a++;
5
}
Die Schleife wird also nach 5 Durchläufen beendet bzw. sie wird erst
gar nicht mehr "betreten".
Das könnte man auch so lösen:
1
a = 0;
2
b = 5;
3
while(1){
4
  a++;
5
  if(a == 4) break;
6
}
Natürlich machen diese Konstruke eher wenig sinn, bei sowas ist eine
For-Schleife angebrachter.

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