Чтение значения бита в регистре PxIN

Мне нужно получить значение ввода, но нужно получить только один конкретный бит. Импортирую какое-то ПО и никак не могу придумать, как получить значение из PxIN для картинки микросхемы, выглядит так:

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

Как мне прочитать входной контакт с MSP430? Я использую Code Composer Studio v5.3.

Какой компилятор? Это имеет значение!
Добавлено @LeonHeller.

Ответы (3)

Вы хотите прочитать PxIN, а затем использовать побитовое И, которое помещает результат в другую переменную.

например result = PxIN & (1<<n), чтобы прочитать n-й бит.

Кроме того, (по крайней мере, с CCS и я думаю - но у меня нет возможности проверить - с GCC, это может измениться с другими компиляторами) вместо того, чтобы выполнять битовые сдвиги, заголовок определяет константу, которую вы можете msp430.hиспользовать BITnздесь.

Это зависит от компилятора!

Вместо того, чтобы пытаться переставлять биты, чтобы выровнять их там, где они вам нужны, часто проще и проще написать что-то вроде:

if (port & bitmask) byte |= 1;

С компилятором CrossWorks вы можете использовать:

a = P1IN & BIT0;

для чтения BIT0 порта P1.