Noch ein paar Anmerkungen zum Code:

  1. Das ganze delay-Zeugs ist wie bereits gesagt bäh. Von ganz wenigen Ausnahmen abgesehen sollte man die Finger davon lassen. Überleg die zum Beispiel, wie eine LED mit 1 Hz blinken kann und gleichzeitig eine zweite LED mit 1.1 Hz. Mit delay funzt das nicht; am ehesten passen da eigene (Countdown-)Zähler, die in einer ISR runtergezählt werden.
  2. outp verschleiert mehr als es nutzt oder klar macht. Wird es einfach raus. Zudem erzeugt es am eine zwei Strichpunkte, was bei if/else Probleme macht.
  3. Laufvariable i ist besser eine lokale Variable in der ISR, dito für portc und portd.