sind folgende beiden Codezeilen gleichwertig?
if((IRQ_MASK != RX_START_EN))
{}
if(!RX_START_EN)
{}
mfg und danke!
Gast
#2014431
Um zu sagen ob diese beiden Zeilen gleichwertig, oder wenigstens korrekt sind, benötige ich mehr Informationen. Ohne weitere Informationen, wie diese Masken aussehen, würde ich sogar raten, dass es "if(IRQ_MASK & RX_START_EN)" heißen müsste.
Nein.
if (5 ist ungleich 6) {}
if (nicht 6) {}
ooohh. Ich glaub du hast mich damit schon auf die richtige Fährte geführt. Das Bit RX_START_EN befindet sich im Register IRQ_MASK.
Gast
#2014632
Großes Fragezeichen schrieb: > Das Bit RX_START_EN befindet sich im Register IRQ_MASK. Wenn RX_START_EN nur eine Bitnummer ist, dann solltest du dieses Macro verwenden, um eine 1 an die richtige Stelle zu schieben. Mit einem AND kann man dann einfach abfragen, ob das entsprechende Bit gesetzt ist if(IRQ_MASK & (1 << RX_START_EN)) Wenn RX_START_EN eine Bitmaske ist, dann entfällt natürlich das shiften. if(IRQ_MASK & RX_START_EN) Eine weitere Möglichkeit wäre auch, dass RX_START_EN ein Makro ist, welches direkt das richtige Bit extrahiert. In diesem Fall fällt sogar die Verknüfung it IRQ_MASK weg. if(RX_START_EN)
Tobi schrieb:
@TO
Langer Rede kurzer Sinn:
Mann muss sich ansehen wie RX_START_EN definiert ist. Die Schreibweise
mit alles Grossbuchstaben, deutet darauf hin, dass es sich dabei um ein
Makro handelt und das muss es in irgendeinem Header File geben.
Also dieses Makro suchen, ansehen. Dann weiß man mehr.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.