Цитата(Andrey_M @ Nov 20 2012, 20:39)

----------------------------------------
Не судите строго код только для пояснения вопроса. Получается пошло писать
кучу абсолютно одинаковых CASE отличающихся только тем какая лапа
процессора будет дрыгаться. Подскажите пожалуйста как это делается правильно.
Заранее спасибо всем откликнувшимся.
Не совсем понятны детали того, что вам нужно...
Какие у вас МК? ("профессиональные" наверное).
На разных ли портах выводы?
Может такое подойдёт:
Код
struct TOutCfg {
volatile unsigned char *Out;
unsigned char PinMask;
};
struct TOutCfg OutCfg[3]={
{&PORTA, 1},
{&PORTB, 2},
{&PORTC, 4}
};
void SetOut(unsigned char out_number, unsigned char state)
{
volatile unsigned char port=*OutCfg[out_number].Out;
unsigned char mask=OutCfg[out_number].PinMask;
port= (state) ? (port|mask) : (port&~mask);
*OutCfg[out_number].Out=port;
}
int main()
{
SetOut(0, 1);
SetOut(0, 0);
SetOut(1, 1);
SetOut(1, 0);
SetOut(2, 1);
SetOut(2, 0);
while (1)
}
?