我有一个头文件声明:
#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;
...
}
我希望能够以简单的方式循环访问端口。我怎么能做到这一点?
答案 0 :(得分: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;
}