Noch einmal RFM 02 Sendemodul -das Testprogramm

Gast #4080323
Lesenswert?

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
#4080465
Lesenswert?

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 ;)

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