C/C++ Declarando diretiva preprocessor em loop, é possivel ?

Ola pessoal,
Tenho um projeto com 16 entradas, 16 saídas, e 16 pinos de controle baseados num chip de 100 pinos, onde não existe uma logica direta no mapeamento dessas I/Os. Quero dizer, os pinos do uC, que na placa são numerados de 1 á 16 em alguns barramentos, estão distribuidos em diferente sequencia de pinos em diversas portas.
Pra minha sorte, o ATMEL STUDIO já criou pra mim as 48 funções principais, digamos
Como todas esses 16 canais terão exatamente a mesma função, vou ter de repetir a mesma logica manualmente pra cada caso; atualmente eu por exemplo desabilito todas as saídas assim:
Se o Wizard da IDE tivesse indexado, seria tranquilo, tipo:
Entretanto, eu gostaria de fazer algo assim (pseudo-codigo) concatenando o sequencial, já na declaração das variaveis e nas funções:
Até daria pra eu alterar o código e indexar num vetor de tamanho 16, mas essas funções Get, Set, Tris, etc foram todas geradas automaticamente, e são re-geradas a cada nova alteração que faço no ATMEL START.
Alguém teria alguma dica de solucao ?
Tenho um projeto com 16 entradas, 16 saídas, e 16 pinos de controle baseados num chip de 100 pinos, onde não existe uma logica direta no mapeamento dessas I/Os. Quero dizer, os pinos do uC, que na placa são numerados de 1 á 16 em alguns barramentos, estão distribuidos em diferente sequencia de pinos em diversas portas.
Pra minha sorte, o ATMEL STUDIO já criou pra mim as 48 funções principais, digamos
AcionaSaida1..16
, HabilitaSaida1..16
, LeEntrada1..16
além de diversas outras como Direção1..6
, etc...Como todas esses 16 canais terão exatamente a mesma função, vou ter de repetir a mesma logica manualmente pra cada caso; atualmente eu por exemplo desabilito todas as saídas assim:
- Código: Selecionar todos
HabilitaSaida1(false);
HabilitaSaida2(false);
- - -
HabilitaSaida16(false);
Se o Wizard da IDE tivesse indexado, seria tranquilo, tipo:
For i=1 to 16 { HabilitaSaida[i]; }
Entretanto, eu gostaria de fazer algo assim (pseudo-codigo) concatenando o sequencial, já na declaração das variaveis e nas funções:
- Código: Selecionar todos
#FOR x = 1 TO 16 DO
HabilitaSaida##x(false);
#END
Até daria pra eu alterar o código e indexar num vetor de tamanho 16, mas essas funções Get, Set, Tris, etc foram todas geradas automaticamente, e são re-geradas a cada nova alteração que faço no ATMEL START.
Alguém teria alguma dica de solucao ?