Du kan använda en mikrokontroller som har inbyggt EEPROM. 8-bitars PIC16F84A har 64 byte EEPROM, vilket är bra för vanligtvis 10 000 000 och minst 1 000 000 skrivningar till varje byte (detta kallas byteuthållighet). PIC vald i ett annat svar, PIC12F635 har en EEPROM med 128 byte och en byte uthållighet på 100.000 skrivningar. PIC24F16KA102, en 16-bitars processor, har 512 byte EEPROM och en byteuthållighet på 100 000 skrivningar.
OP anger inte hur ofta lysdioden blinkar. Låt oss anta att det är fyra gånger i minuten i denna diskussion.
Om ett år blinkar det
$$ 4 * 60 * 24 * 365 = 2 102 400 \ mellanslagstider. $$
Eftersom EEPROM måste fånga både sista på och av händelserna, kommer den att skrivas till dubbelt så mycket, eller ungefär 4,2 miljoner gånger stark>. På fem år är detta 21 miljoner gånger.
Det är uppenbart att detta kommer att överträffa specifikationerna för alla EEPROM som jag nu har inbyggt i en mikrokontroller.
Men det finns en enkel lösning på detta. Istället för att använda samma byte om och om igen för att hålla reda på på eller av-status kan man använda en rad byte som fyller hela chipet.
Du behöver två byte för varje element i matrisen. Så en 64 byte EEPROM, som den i PIC16F84A, kunde innehålla 32 element. Varje gång du skriver till EEPROM skriver du ett 0 till statusbyte (vilket betyder att detta element har data), och antingen ett 0 till databyte (lysdioden var senast av) eller en 0xFF (lysdiod var senast på). Nästa gång du öppnar EEPROM indexerar du genom elementen tills du hittar en med en 0xFF-statusbyte och använder sedan det elementet. Om det inte finns någon kvar, initialisera sedan EEPROM igen och börja om (för PIC: erna i slutet betyder det att du skriver 0xFF till var och en av statusbyten; för PIC24 finns det ett kommando att radera hela EEPROM). Om du behöver veta den sista statusen för lysdioden, indexerar du genom matrisen som tidigare, men nu går du tillbaka ett element och läser upp databiten.
Detta delar i huvudsak antalet åtkomster till en enda byte med en faktor 16 för PIC16F84A (16 och inte 32 eftersom varje statusbyte skrivs till två gånger). Så det skulle kunna hantera 16 miljoner skrivningar totalt, tillräckligt för nästan fyra års data. Och PIC12F635 med sin större EEPROM men mindre byte uthållighet på 100K skulle kunna hantera 3,2 miljoner skrivningar totalt, tillräckligt för nio månader.
PIC24F16KA102, med dess 512 byte EEPROM och bulk radera funktion, skulle kunna hantera 25,6 miljoner skrivningar, tillräckligt i över fem år.
Om blinkhastigheten bara var fyra gånger per timme istället för fyra gånger per minut , då betyder det totalt 70 080 skrivningar per år. Även PIC12F635, med sin uthållighet på 100 000 skriv per byte, skulle hålla i 45 år!