單片機(jī)片內(nèi)大容量EEPROM的一種巧妙應(yīng)用
本文引用地址:http://www.ex-cimer.com/article/172734.htm
究其原因,這與EEPROM的特點(diǎn)有關(guān)。STC89C5lRC/RD+系列單片機(jī)片內(nèi)的EEPROM,與普通的EEPROM不同。普通的EEPROM有字節(jié)讀/寫功能,不需要擦除,在字節(jié)寫的時候自動擦除。而STC89C51RC/RD+系列單片機(jī)片內(nèi)的EEPROM,具有Flash的特性,只能在擦除了扇區(qū)后進(jìn)行字節(jié)寫,寫過的字節(jié)中不能重復(fù)寫,只有待扇區(qū)擦除后才能重新寫,而且沒有字節(jié)擦除功能,只能扇區(qū)擦除。
3 EEPROM(Data FIash)的巧妙應(yīng)用
基于以上EEPROM(Data Flash)不易擦除的特點(diǎn),可以寫后先不擦除。利用EEPROM(Data Flash)容易寫、時間短(字節(jié)寫只有60 μs)的特點(diǎn),可以充分利用其寫的功能。根據(jù)汽車電泳整流器的特點(diǎn):每泳1輛汽車,整流器的輸出電流就從0逐漸上升到最大電流,然后又逐漸回到0。從電流的變化可以準(zhǔn)確地識別出電泳過的車的數(shù)量。每識別出1輛車,就在EEPROM(Data Flash)的1個字節(jié)中(起始地址為0000H)寫入#01H(也可以是其他數(shù),但不能為#OFFH),然后地址自動加1,等待識別出下一輛車。這樣就通過EEPROM(Data Flash)字節(jié)地址的方式,間接記錄了汽車電泳整流器電泳過的車輛總數(shù),并可在數(shù)碼管上顯示出來。16 KB的EEPROM(Data Flash)可記錄16 384輛車。待將計(jì)滿時,可按擦除按鈕擦除EEP-ROM(Data Flash)中的所有扇區(qū),再重新計(jì)數(shù)。如按每10分鐘電泳1輛車,1天工作16小時,可連續(xù)記錄16 384/60/10×16)=170天。此種方法也可用于對電泳整流器連續(xù)工作時間的累計(jì),如每10分鐘記錄1個數(shù)據(jù),可連續(xù)記錄16 384/(60/10)=2 730小時。
整流器停機(jī)斷電后,每次開機(jī)給單片機(jī)上電時,在初始化程序中,首先從地址#0000H讀片內(nèi)EEPROM的數(shù)據(jù),如果數(shù)據(jù)不為#OFFH,地址自動加1,再讀下一個字節(jié),直到所讀數(shù)據(jù)為#OFFH為止。此時EEPROM的地址指針數(shù)據(jù),即為前面累加的電泳車輛數(shù)(或累計(jì)電泳工作時間),可在數(shù)碼管上顯示出來。整流器工作后,按前述
評論