Kann ich die Regelung in die Timer0 ISR einbauen
Davon ist abzuraten. Grundsätzlich gilt: ISRs immer so kurz wie möglich halten.

Mein Vorschlag:

Nimm eine zusätzliche globale Variable:
volatile unsigned char TimerFlag;

Füge in die ISR ein:
TimerFlag = 1;

Und modifiziere in main die Schleife, die auf das nächste Zeichen wartet:
Code:
      do {
         if (TimerFlag) {
             TimerFlag = 0;
             regelung();
         }
         c = uart_getc();
      } while (c & UART_NO_DATA);
Es in die "warte auf das nächste Zeichen"-Schleife einzufügen ist allerdings ein wenig Quick&Dirty. Ich persönlich würde die Struktur von main wieder ein wenig ändern, aber dazu habe ich jetzt keine Lust.