Hallo crishy,

wie Christian oben schon beschrieben hat, rufst Du die die Funktionen SchreibeBit und LoescheBit über Calls auf, aber diese Funktionen werden nicht über eine Return-Anweisung wieder verlassen, sondern Du springst mit einem rjmp wieder zurück. Deshalb bleibt die Rücksprungadresse auf dem Stack und beim reti am Ende der Interruptroutine wird zu einer falschen Adresse gesprungen. Irgendwann wird dann der Stack überlaufen.

Abhilfe: entweder, den Code für die Funktionen SchreibeBit und LoescheBit gliech an den Stellen einbauen, an denen sie gebraucht werden (ist ja nur eine Instruktion, da lohnt sich kein Unterprogrammaufruf); oder an das Ende der Funktionen kein rjmp, sondern einen ret einsetzen.

Gruß, M@nni