現在、C で MSP430 のプログラムを作成しており、ポート 1.6、1.7、2.0、2.1、および 2.2 を使用していくつかの LED を駆動しています。さて、すべての LED をオンにするには、次のように書くだけです。
P1OUT |= 0xC0;
P2OUT |= 0x07;
ただし、P2OUT レジスタ (0x0029) のビット 0、1、および 2 と、P1OUT レジスタ (0x0021) のビット 6 および 7 を指す C 構造体 (LED_ACTIVATION という名前) を作成できるかどうかを知りたいです。 、これにより、次のようなものを書くことができます。
LED_ACTIVATION = 0x2F;
ここで、ポート 2.2 は最上位ビット (ビット 5) で、ポート 1.6 は最下位ビット (ビット 0) です。
MSP では、次のようにレジスタごとにこの割り当てを行うことができます。
__no_init volatile union
{
unsigned char P1OUT; /* Port 1 Output */
struct
{
unsigned char P0 : 1; /* */
unsigned char P1 : 1; /* */
unsigned char P2 : 1; /* */
unsigned char P3 : 1; /* */
unsigned char P4 : 1; /* */
unsigned char P5 : 1; /* */
unsigned char P6 : 1; /* */
unsigned char P7 : 1; /* */
}P1OUT_bit;
} @0x0021;
またはこのように:
#define P1OUT_ (0x0021u) /* Port 1 Output */
DEFC( P1OUT , P1OUT_)
しかし、両方のレジスタアドレスを混在させることは可能ですか?
ありがとう。