Guck noch mal genau ins Datenblatt, da steht nicht RJMP zum anspringen der Interrupts sondern JMP.
Die Sprungweite vin RJMP reicht bei einem ATMEGA16 nicht mehr aus um den kompletten Adressraum bedienen zu können, deshalb müssen hier die JMP Befehle verwendet werden. - Der Fehler ist mir auch schon passiert.
Denk auch dran die JTAGEN Fuse zu deaktivieren, sonst gehen ein paar Ports von PORT C nicht richtig.
SEI löscht übrigens keinen Interrupt, sondern ermöglicht nur dessen Ausführung.
Die entsprechenden Flags werden durch Aufruf der entsprechenden Interrupt Routine mit dem Befehl RETI, oder durch gezieltes Schreiben auf bestimmte Register Bits gelöscht.
So etwas wie eine Heizungssteuerung in Assembler zu programmieren halt ich schon für etwas mutig.
Ich würde da eher ne Hochsprache nehmen wie z.B. "C" oder BASCOM, aber das musst Du selber entscheiden.
Lesezeichen