Interrupt-Service-Routine
-
ich will einen timer dazu benutzen, jede sekunde einen bestimmten port abzufragen.
der code dazu sieht folgendermassen aus: (kleiner ausschnitt)SETB ET1
SETB TR1
schleife: jmp schleifecseg at 1bh: call up
...
...
retimeine frage ist nun folgende: wo hin springe ich nach dem befehl reti? lande ich wieder in der schleife?
-
Du landest dort, wo du vor dem interrupt warst.
Vor dem start deines interrup-codes wird der wert des Befehlszählers auf den stack gepusht, dann wird zur einsprungadresse deines interrupt gesprungen. Ein RETI bewirkt, dass der alte wert wieder zurück in der Befehlszähler geladen wird und dein prog dort weiterläuft wo es vorhin aufgehört hat.