Es gibt ja mehrere Arten Ausgänge anzusteuern aber bei mir machen die alle was andres.
1. PORTB |= (1<<PB4);
2. PORTB &= ~_BV(PB4);

Bei diesem Code habe ich die 2. Variante verwendet. Wenn ich bei dem gleichen Programm die 1. Variante anwende, dann gehen nach 50 mal Durchblinken meine LED`s nicht mehr aus.

Code:
 
#include <avr/io.h>
#define F_CPU 1000000UL  // 1 MHz
#include <util/delay.h>

int main(void)
{
  DDRB = (1<<DDB0) | (1<<DDB1) | (1<<DDB2) | (1<<DDB3);  // PB0, PB1, PB2 Ausgänge
  int leuchtzeit =200;	                                                                    // Blinkzeit
  int i=1;	
     
   while (i<50) {                                                                             // 
	   
    PORTB &= ~_BV(PB0); _delay_ms(leuchtzeit); PORTB |= _BV(PB0);
    PORTB &= ~_BV(PB1); _delay_ms(leuchtzeit); PORTB |= _BV(PB1);
    PORTB &= ~_BV(PB2); _delay_ms(leuchtzeit); PORTB |= _BV(PB2);

   i++;
                      }
   return(0);
}

Was ist der Unterschied zwischen 1. und 2.??