Hallo thewulf00,

ich habe gerade eben endlich Zeit gefunden das ganze mit ISR auszuprobieren. Es funktioniert tatsächlich genauso perfekt wie der andere Code. Hier mal meine Lösung:

Code:
#define AVRGCC 

#include <avr/io.h> 
#include <avr/interrupt.h>

ISR (INT0_vect);
ISR (INT1_vect);

/** 
PD2		Eingang		Spur A 
PD3		Eingang		Spur B 

PB0  	Ausgang 	links 
PB1   	Ausgang 	rechts 
**/ 

#define Links1                     PORTB = (PORTB | (1<<PB0)) 
#define Links0                     PORTB = ~(~PORTB | (1<<PB0)) 

#define Rechts1                    PORTB = (PORTB | (1<<PB1)) 
#define Rechts0                    PORTB = ~(~PORTB | (1<<PB1)) 

#define SpurA                     ((PIND & (1<<PD2)) == 0)		//INT0
#define SpurB                     ((PIND & (1<<PD3)) == 0)		//INT1

volatile char Reset = 0;

ISR (INT0_vect)
{
	if (Reset == 0)
	{
		if (SpurB)
    	{
			if (SpurA)
				Rechts1;
			else
				Links1;
		}
	    else
    	{
    		if (SpurA)
				Links1;
			else
				Rechts1;
		}

		Reset = 4;
	}
}

ISR (INT1_vect)
{
	if (Reset == 0)
	{
		if (SpurA) 
    	{ 
	    	if (SpurB)
				Links1;
			else
				Rechts1;
		}
    	else 
    	{
	    	if (SpurB)
				Rechts1;
			else
				Links1;
		}

		Reset = 4;
	}
}

int main(void) 
{ 
	DDRB = 0b00000011;
	PORTB = 0b00000011;

	DDRD = 0b00000000;
	PORTD = 0b00001100;

	MCUCR = 0b00000101;
	GIMSK = 0b11000000;

	sei ();

	while (1)
	{
		if (Reset > 0)
			Reset--;
		
		if (Reset == 0)
		{
			Links0;
			Rechts0;
		}
	}
   	
	return(0);
}
Den kurzen Code von RP6conrad habe ich nicht ausprobiert, weil ich ihn gerade nicht ganz verstanden habe. Ich glaube da fehlt noch ein Teil?

Viele Grüße
Andreas