Hi, ich hab den AT89C5131 und möchte gern den Widerstand des Poti in einen 8bit Wert umwandeln, in Assembler funktioniert es. Doch mit c hab ich meine Probleme.
Warum heißen alle schönen Frauen mit Nachname JPEG? Und warum alle Sourcecodes TXT? BTW: Das ist kein C-File, das du da angehängt hast.
> for(i = 8; i=0; i--)
Wie oft wird wohl diese Schleife durchlaufen?
Antwort: Nie. Und warum?
Weil i=0 kein Vergleich, sondern eine Zuweisung ist.
UND
Weil es auch mit einem Vergleich (i==0) nicht geklappt hätte.
Gemeint war wohl sowas:
1 | for(i=8; i>0; i--) |
Das selbe gilt auch für die andere Schleife (j).
Dank dir stand irgendwie aufm Schlauch. Aber es scheint wohl nicht der einigste Denkfehler zu sein, denn es geht immer noch nicht.
Der in C übliche Weg der Parameterübergabe ist nicht über den Akku. Der wird bei einem Funktionsaufruf gesichert und danach wieder der alte Wert hergestellt. Sieh dir mal die Paramterübergabe in anderen C-Programmen an. Und da wird es auf jeden Fall auch noch klemmen:
1 | c = P4_1; |
2 | ACC = c; |
In C wird nicht mit Carry und Akku herumhantiert. Das darf der Compiler selber machen. Ich könnte mir u.A. z.B. sowas vorstellen:
1 | char lies8bit(void) |
2 | {
|
3 | char schieberegister = 0; |
4 | P4_1 = 1; |
5 | for(j=8;j>0;j--) |
6 | {
|
7 | P4_0 = 1; |
8 | warte(); |
9 | if(P4_1) schieberegister = schieberegister|0x01; |
10 | schieberegister <<= 1; |
11 | warte(); |
12 | P4_0 = 0; |
13 | warte(); |
14 | }
|
15 | return schieberegister; |
16 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.