Habe das Programm nochmal etwas vereinfacht und mit den LEDs rausgefunden: Er kommt aus dem Interrupt gar nicht mehr raus, und zwar liegt es da an dem Warte(2000); . Im normalen Programm funktioniert die Warte funktion aber, und wenn ich das Warte in der ISR durch Sleep ersetze, bleibt er auch hängen. Wenn ich Warte bzw. Sleep da ganz rausnehme, klappt es, allerdings hält er dann bei einem Hindernis nicht mehr an bzw. fährt direkt weiter.

So sieht das ganze aus:
Code:
ISR(INT1_vect)
{
	StatusLED(RED);
	abgebrochen=1;
	StopSwitch();
	HalteAn();
	Warte(2000);
	StatusLED(YELLOW);
}
Die Status LED wird nicht mehr Yellow. Wenn ich das Warte rausnehme aber schon.

Hier noch die Warte Funktion
Code:
void Warte(int msek)
{
	int i;
	for (i=msek; i>0; i--)
	{
		Sleep(85);
	}
}