Hallo und Frohe Ostern! Erst mal zu meiner Person: Ich bin weder Schüler noch Student und habe auch in meinem Berufsleben nichts mit Informatik oder mit Elektronik zu tun. Also -Learning by doing-. Nun zu meinem Problem: Ich habe mir die HF-Module RFM01-RFM02-bestellt und möchte diese natürlich zum Senden/Empfangen bringen. Dazu habe ich mir das Testprogramm RFM02 (in Mikrocontroller.net veröffentlicht) kopiert. Dieses Testprogramm versuche ich nun zu verstehen und nachzuvollziehen, was sich der Programmierer dabei gedacht hat. Hierzu nun einen Auszug aus dem Testprogramm. Beispiel: cmd = 0XCC00 void sendCommand(uint16_t cmd){ uint8_t i; SCK_LOW; SELECT; for(i=0;i<16;i++){ SCK_LOW; if(cmd&0x8000){ //mein Problem SDI_HIGH; }else{ SDI_LOW; } SCK_HIGH; cmd = cmd << 1; } SCK_LOW asm("nop"); UNSELECT; } Nun verstehe ich die Bedingung in der IF-Anweisung --if(cmd&0x8000)—nicht. If—ok-- cmd --dürfte der Funktionsparameter sein 0X—zeigt das es eine hexadezimal ist 8000 –hexadezimalzahl— Aber was ist mit--&-- gemeint, der Bitweise Operator – and-- ?? Wie muss ich diese Anweisung lesen? Welche Bedingungen müssen erfüllt werden damit der Befehl-- SDI_HIGH –ausgeführt wird bzw. die else Anweisung ausgeführt wird? Danke Lothilein
Bitweises "AND".
1 | cmd & 0x8000 |
"verunded" cmd mit 0x8000. Das Ergebnis ist entweder 0 oder != 0. Letztendlich wird in der Zeile also schlicht geprüft, ob Bit 15 in cmd gesetzt ist oder nicht. Ein Buch wär' wahrscheinlich wesentlich effizienter als die Operatoren hier einzeln abzufragen ;)
Markus F. schrieb: > Ein Buch wär' wahrscheinlich wesentlich effizienter als die Operatoren > hier einzeln abzufragen ;) Wenn das Internet wieder geht, kann man dort auch nachsehen, z.B. http://de.wikibooks.org/wiki/C-Programmierung unter "Ausdrücke und Operatoren"
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.