80535 Interrupt 0

Hallo,
habe ein Problem!
Ich muss über den Interrupt eingang 0 (Port 3.2) bei einem 80535 den Wert von P4 erniedrigen. Doch der Emulator tut so, als ob nichts wär, wenn ich den Interrupt auslöse!

Mein Quälcode:

$nomod51
$include (80515.MCU)

START: LJMP Start2
Interrupt: dec P4
LJMP Warte
Start2: setb IT0
setb EX0
setb EAL
LJMP Warte
Warte: nop
LJMP Warte

end

ASEM zeigt auch keine Fehler an, nur das Emulationsprogramm SIM-535 stellt sich doof (ja habe es schon auf 80535 umgestellt :smile:

DANKE!
Gruß
Michael

Interrupt: dec P4
LJMP Warte

Hallo,

ein Interrupt ist ein Unterprogramm und muss daher mit einem Rückkehrbefehl (RETI oder ähnlich) beendet werden, sonst läuft der Stack über.

Gruss Reinhard

Hallo,
habe es jetzt auch mit reti versucht, aber es funktioniert nicht. mit INT1 schon…
Gruß
Michael

Hallo,

Interrupt: dec P4

Wo steht denn Deine Interruptroutine? Jeder Interrupt springt eine andere Adresse an.

Btw., es ist ganz schlechter Stil und führt immer gern zu schwer (oder gar nicht) zu findenden Fehlern, wenn man den Reset-Zustand als gegeben voraussetzt. Deine Progamme sollte deshalb immer mit einer kompletten Initialisierung aller Controlregister und Speicherzellen beginnen. Sonst funktioniert später das Programm nicht, wenn beim Einschalten jemand eine Taste drückt oder die Netzsynchronisierung grad einen Nulldurchgang hat o.ä.
Gruß
loderunner

Hallo!
für dem Interrupt 0 steht die auf 0003h und bei Interrupt 1 bei 0013h.
komischer weise funktioniert es bei Interrupt 1 (natürlich bei Interrupt 1 mit 10x nop aufgefüllt), aber nicht bei 0!

Das ist das Programm , welches nicht geht:
$nomod51
$include (80515.MCU)

START: LJMP Start2
Interrupt: inc P4
reti
Start2: setb IT0
setb EX0
setb EAL
mov P4, #0
Warte: LJMP Warte

end