Ich habe angefangen mit Codevision zu programmieren und kann leider nicht richtig deuten was die if-abfrage für bedingung hat? if(PIND & 8) data = data | 0x80; // Store a '1' Kann mir einer das kurz erklären?
1. PIND ist der Bit-Zustand der Pins am Port D. 2. 8 = Binär 00001000 , dass heistt BIT Nr. 3 ist gesetzt (In C zählt alles ab 0) 000000001 = 1 // Bit 0 gesetzt 000000010 = 2 // Bit 1 gesetzt 000000100 = 4 // Bit 2 gesetzt ... 100000000 = 128 // Bit 7 gesetzt 3. (PIND & 8) logisches und -> falls am Port D pin 3 gesetzt ist, ist das ergebnis ebenfalls 8, sonst null 4. if(PIND & 8) 0 bedeutet Falsch, alles was nicht 0 ist bedeutet Wahr.
> 3. (PIND & 8) logisches und
ist natürlich falsch, richtig ist es ein binäres und!
und die Zeile data = data | 0x80; kann man in C noch abkürzen zu: data |= 0x80; Erzeugt den gleichen Code und bei den schreibfaulen C-Programmierern wirst du das häufig finden.
Hi wobei data = data | 0x80; syntaktisch eigentlich identisch zu data |= (0x80); ist. In diesem Beispiel ändert das natürlich nichts bei data = data * 4 + 2; und data *= 4 + 2; wirds deutlich. Matthias
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.