Пишеш функцию которая управляет битом порта, например
void SetBitA1(char state)
{//Управляет битом 1 порта А
}
void SetBitB3(char state)
{//Управляет битом 3 порта B
}
И вместо указателя на бит используеш указатель на функцию. Например
void BlinkLed(void(*p_funk)(char)) //Для моргания светодиодом используется указатель p_funk.
{
p_funk(1);
sleep(200);
p_funk(0);
}
BlinkLed(SetBitA1); //моргнуть светодиодом на порте А1
BlinkLed(SetBitB3); //моргнуть светодиодом на порте B3
void(*pBlinkPin)(char); //Обьявляем глобальную переменную-указатель на функцию
pBlinkPin = SetBitA1;
pBlinkPin(1); Установить на порте А1 '1'.