Hallo leute,
habe gestern versucht eine Interrupt Routine zu Programmieren, doch sie Funktioniert weder im Simulator noch mit dem richtigen Chip. Ich weiß einfach nicht an was es liegt.
Hier mein Code:

Code:
.include "m32def.inc"

.def temp1 = r16

.org 0x000
		rjmp main
.org 0x002
	rjmp int0_handler	;IRQ0 Handle

int0_handler:
			ldi temp1, 0b00010000	;PortC5 HIGH, rest LOW
			out PortC, temp1
			reti

main: 
	ldi temp1, 0xFF	;Port D auf Ausgang
	out DDRD, temp1
	ldi temp1, 0x00		;Port D auf LOW
	out PORTD, temp1

	ldi temp1, 0xFF		; PortC auf Ausgang
	out DDRC, temp1
	ldi temp1, 0b00000000	;PortC LOW
	out PortC, temp1
	
	in temp1, GICR
	ori temp1, 0b01000000	;INT0 = 1
	andi temp1, 0b11111101	;IVSEL = 0
	out GICR, temp1
	in temp1, MCUCR		;INT0 Aktivieren
	ori temp1, 0b00000011 ; rising Edge
	out MCUCR, temp1
	sei

ende:	rjmp ende
Die GICR Maske ist gesetzt, die MCUCR Bits sind aktiviert und das I Flag ist aktiv, dass müsste doch dann eigentlich Funktionieren wenn der Port D2 (Int0) dann von Low auf high gesetzt wird oder? In meinem Datenblatt vom AtMega32 steht, dass der Interrupt auch funktioniert wenn der Port auf output steht, also hab ich ihn auf low gestellt.

Wäre nett wenn ihr mir helfen könntet.

LG

Jason07