0

次のように宣言するヘッダー ファイルがあります。

  #pragma char PORTC   @ 0x07
  #pragma char PORTD   @ 0x08
  #pragma char PORTE   @ 0x09

ここで、PORTC.0、PORTC.1...PORTC.7 と記述して、PIC プロセッサのポートにアクセスします。

これらのポートで配列を作成したいと思います。次のように考えています。

#define ARRAY { {PORTC.5, PORTD.2, PORDC.0}, {PORTE.1, PORTD.3, PORTC.6}.... }

int main ( void )
{
   *type* somestuff[3][9] = ARRAY;
   ...
}

ポートを簡単な方法でループできるようにしたい。どうすればこれを達成できますか?

4

1 に答える 1

0

プラグマは明らかにコンパイラ固有の言語拡張の一種ですが、コードは正常に機能するように見えます。

この例では、通常のC構文のみを例として使用して、これが通常どのように行われるかを示しています(明らかに、デバイスで特別なことは何もしません)。明らかな置換を行い、それが機能するかどうかを確認する必要があります。

char PORTC_0 = 1;
....
char PORTE_6 = 42;

int main (void)
{
  struct {char port[3];} dev[3][9] = {{{PORTC_5, PORTD_2, PORDC_0},
                                       {PORTE_1, PORTD_3, PORTC_6},
                                       ....},
                                      {...},
                                      ....};
  int i, j;
  for (i = 0; i < 3; i++)
    {
      for (j = 0; j < 9; j++)
        {
           do_stuff (dev[i][j].port[0], dev[i][j].port[1], dev[i][j].port[2]);
        }
    }

  return 0;
}
于 2013-01-15T22:20:35.357 に答える