蚁哥和你一起玩ARDUINO(47了解EEPROM)
EEPROM (Electrically Erasable Programmable Read-Only Memory),意思是电可擦可编程只读存储器,这是一种掉电后数据不丢失的存储单元。
ARDUINO的主控芯片都自带EEPROM ,不过型号不同,存储的空间大小也不同。如ATmega328P的EEPROM空间为1K,而ATmega2560的EEPROM空间为4K。
我们可以把EEPROM理解为ARDUINO的"小硬盘",按照需要当前的状态值保存在这个"小硬盘"中,每次上电后就先从"小硬盘"中读取状态值,然后根据当前状态值处理程序就可以了。
EEPROM在ARDUINO中操作也很简单,ARDUINO提供了相应的库函数供我们使用,比较常用的为下面两个函数:
EEPROM.read(地址);//读取一个字节的EEPROM。返回值为BYTE类型(8位),从未被写入的位置读出值为0xFF;
EEPROM.write(地址,值);//写一个字节到EEPROM中 ,值为BYTE类型(8位)。
来看下面的代码实例:
注意,这里的类型是BYTE,只有8位,也就是说,每次写入的最大值是255,如果要操作的数据大于255,比如1000,该做如何处理呢?通常的做法是,把1000分为高低两个字节来存储;代码实现如下:
int val = 1000;//将要存储的变量
int hByte = (val&0xFF00)>>8;//取变量的高8位,将数据整体右移8位
int lByte = val&0x00FF;//取变量的低8位
EEPROM.write(0, lByte ); //存储低8位
EEPROM.write(1, hByte ); //存储高8位
读取代码
int val ;
int hByte = EEPROM.read(1);
int lByte = EEPROM.read(0);
val =(hByte<<8)+lByte ;
请先 后发表评论~