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

pragma 显然是某种特定于编译器的语言扩展,但您的代码看起来可能正常工作。

此示例仅使用常规 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 回答