Die Variable "t" deklarierst du ja direkt in der for-Schleife.
Das einzige, was ich jetzt gefunden hab ist folgende zeile, die ich mir nicht erklären kann:
digitalWrite(timerpin[t],!digitalRead(timerpin[t]));
digitalRead liefert HIGH oder LOW (1 oder 0 intern) - sagst du damit, dass es das Gegenteil von dem gelieferten Wert sein soll? Weiß nicht, ob das so funktioniert...