單片機片內大容量EEPROM的一種巧妙應用
本文引用地址:http://cqxgywz.com/article/172734.htm
究其原因,這與EEPROM的特點有關。STC89C5lRC/RD+系列單片機片內的EEPROM,與普通的EEPROM不同。普通的EEPROM有字節讀/寫功能,不需要擦除,在字節寫的時候自動擦除。而STC89C51RC/RD+系列單片機片內的EEPROM,具有Flash的特性,只能在擦除了扇區后進行字節寫,寫過的字節中不能重復寫,只有待扇區擦除后才能重新寫,而且沒有字節擦除功能,只能扇區擦除。

基于以上EEPROM(Data Flash)不易擦除的特點,可以寫后先不擦除。利用EEPROM(Data Flash)容易寫、時間短(字節寫只有60 μs)的特點,可以充分利用其寫的功能。根據汽車電泳整流器的特點:每泳1輛汽車,整流器的輸出電流就從0逐漸上升到最大電流,然后又逐漸回到0。從電流的變化可以準確地識別出電泳過的車的數量。每識別出1輛車,就在EEPROM(Data Flash)的1個字節中(起始地址為0000H)寫入#01H(也可以是其他數,但不能為#OFFH),然后地址自動加1,等待識別出下一輛車。這樣就通過EEPROM(Data Flash)字節地址的方式,間接記錄了汽車電泳整流器電泳過的車輛總數,并可在數碼管上顯示出來。16 KB的EEPROM(Data Flash)可記錄16 384輛車。待將計滿時,可按擦除按鈕擦除EEP-ROM(Data Flash)中的所有扇區,再重新計數。如按每10分鐘電泳1輛車,1天工作16小時,可連續記錄16 384/60/10×16)=170天。此種方法也可用于對電泳整流器連續工作時間的累計,如每10分鐘記錄1個數據,可連續記錄16 384/(60/10)=2 730小時。
整流器停機斷電后,每次開機給單片機上電時,在初始化程序中,首先從地址#0000H讀片內EEPROM的數據,如果數據不為#OFFH,地址自動加1,再讀下一個字節,直到所讀數據為#OFFH為止。此時EEPROM的地址指針數據,即為前面累加的電泳車輛數(或累計電泳工作時間),可在數碼管上顯示出來。整流器工作后,按前述















評論