我有一个头文件声明:
#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;
}