Lesewert des Bits im PxIN-Register

Ich muss den Wert einer Eingabe erhalten, muss aber nur ein bestimmtes Bit erhalten. Wenn Sie Software importieren und sich anscheinend keine Möglichkeit vorstellen, den Wert von PxIN für das Mikrochip-Bild abzurufen, sieht es so aus:

unsigned char idx;
for (idx = 0; idx < 8; idx++) {
    unsigned char byte |= RC1;
}

Wie würde ich den Eingangspin mit einem MSP430 lesen? Ich verwende Code Composer Studio v5.3.

Welcher Compiler? Es macht einen Unterschied!
@LeonHeller Hinzugefügt.

Antworten (3)

Sie möchten PxIN lesen und dann ein bitweises UND verwenden, das das Ergebnis in eine andere Variable einfügt.

zB result = PxIN & (1<<n)um das n-te Bit zu lesen.

Außerdem (zumindest mit CCS und ich denke - aber ich habe keine Möglichkeit zum Testen - mit GCC könnte es sich mit anderen Compilern ändern) anstelle von Bitverschiebungen definiert der Header eine Konstante, die Sie msp430.hhier BITnverwenden können.

Es kommt auf den Compiler an!

Anstatt zu versuchen, Bits zu verschieben, um sie dort auszurichten, wo Sie sie brauchen, ist es oft einfacher und einfacher, etwas zu schreiben wie:

if (port & bitmask) byte |= 1;

Mit dem CrossWorks-Compiler können Sie Folgendes verwenden:

a = P1IN & BIT0;

um BIT0 von Port P1 zu lesen.