Hallo,
das sieht alles recht kompliziert und schlecht erweiterbar aus, und dann
noch die vielen Stringfunktionen.
Mach doch folgendes (hab ich schon für Animationen auf einem Display so
ähnlich umgesetzt)
lege ein Struct an das folgende Informationen aufnimmt:
aktueller Zähler (AZ), Zählerreset (ZR), PTR auf Funktionsaufruf
In ein Array legst du nun die Structs die im Programm gerade gebraucht
werden.
Ausgelöst vom Timer gehst du nun das Array durch und erhöhst (AZ),wenn
(AZ) >= (ZR) dann setzt du (AZ) auf null und führst die Funktion aus. Um
einen Zeitlichen versatz zu erreichen Initialisierst du halt (AZ) nicht
mit null.
Würde bei Dir in etwa folgendermaßen aussehen:
struct a; 1, 2, *A
struct b; 0, 2, *B
struct c; 0, 8, *C
Was aus deiner Aufgabenstellung nicht klar hervorgeht ist, ob bei
Ausführung von C die Bearbeitung von A/B ausgesetzt wird. Sieht in der
Tabelle so aus klingt aber im Text nicht so.
Dafür könnte man im Struct natürlich noch einen Zähler unterbringen der
alle x-Schritte ein Aussetzten der normalen Zählung von (AZ) bewirkt.
Die Möglichkeiten sind unbegrenzt.
Sascha