0

スイッチの出力を 1 つの変数に結合する方法があるかどうか疑問に思っていました。つまり、スイッチ 1、スイッチ 2、スイッチ 3、およびスイッチ 4 があるとします。各スイッチは個別に宣言され、スイッチの出力はスイッチ 1 -0 スイッチです。 2 -1 スイッチ 3 -1 スイッチ 4 -0

これらの出力を 1 つの変数に結合したい (例: switch_output = 0110) そして、これを自然数に変更したい。

これは可能ですか??

ありがとうございました

PS: これは単なる例です。実際に 18 個のスイッチでこれを実行しようとしています。使用しているプログラムでは、各スイッチを個別に宣言することしかできません。

ここにそれらが宣言されている方法があります

static  const gpio_pin_t SW0 = { .port = 2, .pin = 0};
static  const gpio_pin_t SW1 = { .port = 2, .pin = 1};
static  const gpio_pin_t SW2 = { .port = 2, .pin = 2};
static  const gpio_pin_t SW3 = { .port = 2, .pin = 3};
static  const gpio_pin_t SW4 = { .port = 2, .pin = 4};
static  const gpio_pin_t SW5 = { .port = 2, .pin = 5};
static  const gpio_pin_t SW6 = { .port = 2, .pin = 6};
static  const gpio_pin_t SW7 = { .port = 2, .pin = 7};
static  const gpio_pin_t SW8 = { .port = 2, .pin = 8};
static  const gpio_pin_t SW9 = { .port = 2, .pin = 9};
static  const gpio_pin_t SW10 = { .port = 2, .pin = 10};
static  const gpio_pin_t SW11 = { .port = 2, .pin = 11};
static  const gpio_pin_t SW12 = { .port = 2, .pin = 12};
static  const gpio_pin_t SW13 = { .port = 2, .pin = 13};
static  const gpio_pin_t SW14 = { .port = 2, .pin = 14};
static  const gpio_pin_t SW15 = { .port = 2, .pin = 15};
static  const gpio_pin_t SW16 = { .port = 2, .pin = 16};
static  const gpio_pin_t SW17 = { .port = 2, .pin = 17};

Mahmoud Fayez 私はあなたの解決策を試しましたが、それは特定の点まで機能します。ここで得られるのは、2進数ではなく自然数です。これは、出力の印刷画面ですプリントスクリーン

これがコードです。動作させるために少し変更する必要がありました

     for (i = 0; i < SwitchesCount; i++)
 {
     temp2 = GPIO_Get(Switches[i]);
     iResult = (iResult << 1) + temp2;
     printf ("%lu, ",temp2);
 }
printf ("\n iResult =  %lu \n",iResult);

static uint32_t iResult = 0;

uint32_t は unsigned long です

4

1 に答える 1

1

これを試すことができます:

const int SwitchesCount = 18;
int iResult = 0;
int i = 0;

static  const gpio_pin_t switches[SwitchesCount] = {{ .port = 2, .pin = 0}, { .port = 2, .pin = 1},{ .port = 2, .pin = 2}, { .port = 2, .pin = 3}, { .port = 2, .pin = 4}, { .port = 2, .pin = 5}, { .port = 2, .pin = 6}, { .port = 2, .pin = 7}, { .port = 2, .pin = 8}, { .port = 2, .pin = 9},{ .port = 2, .pin = 10}, { .port = 2, .pin = 11}, { .port = 2, .pin = 12}, { .port = 2, .pin = 13}, { .port = 2, .pin = 14}, { .port = 2, .pin = 15}, { .port = 2, .pin = 16}, { .port = 2, .pin = 17}};

for (i = 0; i < SwitchesCount; i++)
{
    iResult = iResult << 1 + switches[i]; 
}
// you now have iResult with the value you are looking for.
于 2012-08-25T14:19:11.293 に答える