Habe das ganze jetzt mal versucht zu ändern.

Hier der Code.

Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>

	
	int main(void)
	{
		DDRB |= (1<<PB1);     // Ausgang für LED
		DDRB = ~(1<<PB0);     // Eingang für Taster
		PORTB |=  (1<<PB0);   // Pullup Einschalten
		
		 
		if(statusfromeeprom)        // Zustand aus dem EEPROM lesen
		{
			DDRB |= (1<<PB1);      // LED Einschalten
			_delay_ms(10000)      //  10 Sekunden warten
			DDRB &= ~(1<<PB1);   // LED ausschalten
			
		}
		while(1)
		{
			//Hier jetzt den Taster abfragen:
			if(PINB & (1<<PB0))
			{
				_delay_ms(5000);          //5 Sekunden warten
				if(PINB & (1<<PB0))      //Schauen ob der Pin immer noch High ist
				{
					//Wie soll ich hier den neuen Wert ins Eeprom schreiben ?
					//Also neuen Status in das EEPROM schreiben
				}
			}
		}
	}

Das habe ich zum Eeprom lesen und schreiben gefunden.

Code:
// Byte aus dem EEPROM lesen
uint8_t EEPReadByte(uint16_t addr)
{
  return eeprom_read_byte((uint8_t *)addr);
}

// Byte in das EEPROM schreiben
void EEPWriteByte(uint16_t addr, uint8_t val)
{
  eeprom_write_byte((uint8_t *)addr, val);
}
Natürlich habe ich noch viel mehr zum Eeprom gefunden.
Nur ist es für einen Anfänger nicht gerade leicht das richtige zu finden.

Und ja, ich lese wirklich sehr sehr viel im Internet nur leider fällt es mir sehr schwer das ganze zu verstehen

PS: Welche Zugriffsart benötige ich bei meinem Programm?
Byte, word, dword, float oder block ?