Danke, werde ich mir mal anschauen! =)

So habe folgendes Problem, habe ein Lauflich Programmiert.
folgende Fehler treten auf:
Ich hab für meine verschiedenen LEDs Arrays verwendet und wenn die for-Schleife das Array 7 werden LED 4-8 angeschaltet und nicht LED 8 alleine wie es sein sollte, wenn ich, dann aber nur bis Array 6 laufen lasse funktioniert das ohne Probleme! Wo ist mein Fehler? Ich find den einfach nicht.

Dann ein weiteres Problem, die folgende for-Schleife. Die wird immer übersprungen, und ich hab auch keine Ahnung wieso! Was mache ich da falsch, die ist doch wie jede andere for-Schleife auch! Oder übersehe ich da mal wieder was?



Code:
#include <avr/io.h>

uint8_t led[7];
uint8_t zaehler;
uint8_t zaehler2;
uint8_t endlos;
uint8_t wait0;
uint8_t wait1;
uint8_t wait2;




void warte()
{
	for(wait0 = 0; wait0 <= 254; wait0 = wait0 + 1)
	{
		for (wait1 = 0; wait1 <= 254; wait1 = wait1 + 1)
		{
			for(wait2 = 0; wait2 <= 5; wait2 = wait2 + 1)
			{
			}
		}
	}
}

int main()
{
	//Array Felder konfigurieren
	led[0] = 0b11111110; 
	led[1] = 0b11111101;
	led[2] = 0b11111011;
	led[3] = 0b11110111;
	led[4] = 0b11101111;
	led[5] = 0b11011111;
	led[6] = 0b10111111;
	led[7] = 0b01111111;

	DDRB = 0xFF;		//PORTB als Ausgang
	PORTB = 0xFF;
	
	for(endlos = 1; endlos <= 2; endlos = endlos + 1)
	{
		PORTB = 0xFF;
		for(zaehler = 0; zaehler <= 6; zaehler = zaehler + 1)
		{
			PORTB = led[zaehler];
			
		
		}
		
		for(zaehler2 = 6; zaehler2 ==1; zaehler2 = zaehler2 - 1)
		{
			PORTB = led[zaehler2];
			warte();
		}
		
		endlos = endlos - 1;
	}

	return 0;
}