Code:
#include <avr/io.h>          
 
int main () {            
 
   DDRB  = 0x00;   // B Eingänge          
   PINB = 0x00;     //jeden Eingang benutzen    PIN ist ein ausgaberegister!!! nie was reinschreiben!    
   
   DDRD  = 0xFF;   // D Ausgänge    sieht ok aus      
   PORTD = 0x11;	//Standard: D0,D4 gesetzt das auch
   
   DDRD  = 0xFF;   // A Ausgänge   erm das register für port A ist DDRA       
   PORTD = 0x00; // dasselbe in grün nicht PORTD sondern PORTA
 
   while(1) 
   {                
	
		if ((!PINB1 & (1<<PINB1)) || ( !PINB2 & (1<<PINB2)) ) // Wenn B1 oder B2 == 0 dann ... 
// iwie falsch (!(PINB & (1<<PB1)) || !(PINB & (1<<PB2)))
		{
			PORTD = 0x00;         // Alle B Ports auf 0 PORTB statt PORTD
		}
 
		if ( PINB4 & (1<<PINB4) ) // Wenn B1 == 1 dann ... siehe oben
		{
			PORTD = 0x17;			//D0,D1,D2,D4 gesetzt 
		}

		if ( PINB3 & (1<<PINB3) ) // Wenn B1 == 1 dann
		{
			PORTD = 0x19;			//D0,D1,D4 gesetzt
		}
		
		if ((!PINB0 & (1<<PINB0)) ) // Wenn B0 == 0 dann
		{
			PORTD = 0x11;				//Standard: D0,D4 gesetzt
		}
   
		if((bit_is_set (PORTD,4)))		//2LEDs abwechselnd blinken
										//Wenn PortD4 gesetzt
		{
			PORTA &= ~(1 << 4);		//PortD4 auf 0 setzen PD4 statt nur 4
			PORTD |= (1 << 5);			//PortD5 auf 1 setzen
		}
		else
		{
			PORTA &= ~(1 << 5);		//PortD5 auf 0 setzen PD5 statt nur 5
			PORTD |= (1 << 4);			//PortD4 auf 1 setzen
		}

   }                
   return 0;               
}