Das Prüfen ist so kurz, dass du es im Interrupt machen kannst, und zwar
so, dass du bei 0 (was 256 entspricht) ein Bit setzt, welches dem
Hauptprogramm mitteilt, dass der Wert erreicht ist.
Der 8051 bietet dafür ja den JZ- bzw. JNZ-Befehl.
Also im Interrupt:
1 | ... ;Variable hochzählen
|
2 | mov a,variable ;Variable auf 256 prüfen
|
3 | jnz INT_ENDE ;Wenn Variable kleiner als 256, Interrupt verlassen
|
4 | setb complete ;ansonsten complete-Flag setzen
|
5 | ...
|
Denk an Sichern der verwendeten Register (PUSH/POP).
Ob der Sonderfall variable=0 (nicht 256) eintreten kann, hängt von
deiner restlichen Software ab.
Generell sollte, wie du richtig gesagt hast, jeder Interrupt so kurz wie
möglich sein. Schleifen sind also zu vermeiden, was auch in nahezu 100%
aller Fälle geht.
Ralf