0

我有一个 MSP430 G2452 连接了几个拨动开关(阅读:NOT 按钮)。我知道如何设置中断和去抖动按钮,但是我很难设置我的端口,所以我可以采样哪些开关是关闭/打开的。

我希望能够读取 P1IN(带屏蔽)以找出哪些开关是关闭/打开的,哪些是打开/关闭的。开关连接到 GND,我将它们连接的引脚拉高,所以当开关闭合/打开时,它连接的引脚应该被拉低。但 P1IN 似乎没有改变。

我可以设置一个在引脚接地时触发的中断,但我只想对引脚进行采样,而不是使用中断。如何设置我的端口引脚,以便我可以使用 PxIN 读取它们的状态?

// Port 1 setup
    P1SEL = 0;                  // set P1 as digital I/O for all pins
    P1DIR = ~sw1to6;            // set switches 1-6 for input
    P1OUT = sw1to6;             // enable pull-ups on switches 1-6
    P1REN |= sw1to6;            // enable pull-up resistors on switches 1-6

(头文件定义:)

// P1.0-1.5
#define sw1 0x01
#define sw2 0x02
#define sw3 0x04
#define sw4 0x08
#define sw5 0x10
#define sw6 0x20
#define sw1to6 sw1 | sw2 | sw3 | sw4 | sw5 | sw6
4

1 回答 1

3

由于您的“sw1to6”宏不在括号中,因此否定不会达到您的预期。你可能想要:

#define sw1to6 (sw1 | sw2 | sw3 | sw4 | sw5 | sw6)

一般来说,最好总是把你的宏放在括号中。

之后,您应该能够读取 P1IN 上的引脚。

于 2012-09-02T17:32:04.077 回答