您可以使用內置EEPROM的微控制器。 8位的 PIC16F84A具有64字節的EEPROM,通常可存儲10,000,000個字節,每個字節至少寫入1,000,000個字節(這被稱為字節耐力)。在另一個答案中選擇的PIC12F635具有128字節EEPROM和100,000次寫入的字節耐久力。 PIC24F16KA102是一個16位處理器,具有512字節的EEPROM和10萬次寫入的字節耐力。
OP並不表示LED閃爍的頻率。出於討論的目的,假設它是每分鐘四次。
在一年中,它將閃爍
$$ 4 * 60 * 24 * 365 = 2,102,400 \ space times。 $$
由於EEPROM需要捕獲最後的打開和關閉事件,因此它將被寫入該數字的兩倍,即大約 420萬次 強>。在五年內,這是 2100萬次。
很顯然,這將超過我現在內置在微控制器中的任何EEPROM的規格。
但是有一個簡單的解決方案。不用一遍又一遍地使用相同的字節來跟踪打開或關閉狀態,而是可以使用字節數組來填充整個芯片。
對於數組中的每個元素,您需要兩個字節。因此,一個64字節的EEPROM(如PIC16F84A中的EEPROM)可以容納32個元件。每次寫入EEPROM時,都將0寫入狀態字節(表示該元素有數據),或者將0寫入數據字節(LED最後熄滅)或0xFF(LED最後點亮)。下次訪問EEPROM時,將對元素進行索引,直到找到一個狀態字節為0xFF的元素,然後使用該元素。如果沒有剩餘,則重新初始化EEPROM並重新開始(對於低端PIC,這意味著向每個狀態字節寫入0xFF;對於PIC24,有一條命令擦除整個EEPROM)。如果您需要了解LED的最後狀態,可以像以前一樣對數組進行索引,但是現在返回一個元素並讀取數據字節。
對於PIC16F84A,這實質上是將對單個字節的訪問次數除以16的因子(16個而不是32個,因為每個狀態字節被寫入兩次)。這樣一來,它總共可以處理1600萬次寫入,足以容納近四年的數據。具有更大EEPROM但字節耐力較小的100K的PIC12F635將能夠處理320萬次寫操作,足夠用9個月。
具有512字節EEPROM和批量擦除功能的PIC24F16KA102將能夠能夠處理2560萬次寫入,足夠五年以上。
如果閃爍速率僅為每小時的四次,而不是每分鐘的四次>,則意味著每年總計70,080次寫入。甚至具有每字節100,000次寫入能力的PIC12F635也可以持續使用45年!