0

MSP430 G2452 を複数のトグル スイッチ (ボタンではなく) に接続しています。割り込みをセットアップしてボタンをデバウンスする方法は知っていますが、ポートをセットアップするのに苦労しているので、どのスイッチが閉じているかオンになっているかをサンプリングできます。

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 に答える