蚁哥和你一起玩ARDUINO(47了解EEPROM)

EEPROM (Electrically Erasable Programmable Read-Only Memory),意思是电可擦可编程只读存储器,这是一种掉电后数据不丢失的存储单元。

ARDUINO的主控芯片都自带EEPROM ,不过型号不同,存储的空间大小也不同。如ATmega328P的EEPROM空间为1K,而ATmega2560的EEPROM空间为4K。

Atmega328P 内部结构图

我们可以把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 ;

举报
评论 0