我有一个头文件声明:

  #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;
   ...
}


我希望能够以简单的方式循环通过端口。我该怎么做?

最佳答案

编译指示显然是某种特定于编译器的语言扩展,但是您的代码似乎可以正常工作。

本示例仅使用常规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;
}

09-10 05:22