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 schleife

    cseg at 1bh: call up
    ...
    ...
    reti

    meine 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.


Anmelden zum Antworten