Ich mach sowas, indem ich zwei Tabellen anlege:
Code:
char cPortAddr[17] = { port1, port2,...... port17 };
char cPinMask[17] = { 0x10, 0x20,...... 0xNN };
Portaddr aus dem Datenblatt IO-REG, d.h. meist z.B. PORTD + 0x20  

LedAufdrehen( zaehler)
{
uint* Port = cPortAddr[zaehler];
   *Port |=  cPinMask[zaehler];
}
LedAbdrehen( zaehler)
{
uint* Port = cPortAddr[zaehler];
   *Port &=  ~cPinMask[zaehler];
}

  while (1)
  {
      sleep (x)      // oder sowas ähliches
      LedAbdrehen( zaehler);
      if (zaehler < 17)          zaehler++; 
     else                             zaehler = 0; 
      LedAufdrehen( zaehler);
  }
Verständlich ?