Nun, ganz allgemein isses einfacher, für jeden "task" einen eigenen Zähler zu haben. sagen wir mal,
R16 für "one"
R15 für "two"
R14 für "three"
.... usw..
Also: der Timer tickert in der kleinsten Einheit
Code:
OCR:
ck_1: Prüfung f. routine-1
dec r16 eins abziehen
brne ck_2 is null ? nö, zum nächsten check
ldi r16, Zähler-1 is null, also Zähler wieder nachladen
rcall routine-1 routine aufrufen
ck_2: Prüfung f. routine-2
dec r15 eins abziehen
brne ck_3 is null ? nö, zum nächsten check
ldi r15, Zähler-2 is null, also Zähler wieder nachladen
rcall routine-2 routine aufrufen
ck_3: .... usw...
Das ist sozusagen die "Panik"-Lösung, denn irgendwann gehen dir die Register aus, und sie dürften auch nicht ausserhalb verändert werden.
Aber für ein paar routinen kann man das schon noch so machen.
Lesezeichen