zoukankan      html  css  js  c++  java
  • Arduino 中 EEprom 写入读取清除

    转自:https://www.arduino.cn/thread-1157-1-1.html

    EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。 简而言之就是你想断电后arduino还要保存一些参数,就使用EEPROM吧。 在各型号的arduino控制器上的AVR芯片均带有EEPROM,也有外接的EEPROM芯片,常见arduino控制器的EEPROM大小: Arduino UNO、Arduino duemilanove-m328、Zduino m328均使用ATmega328芯片,EEPROM都为1K Arduino duemilanove-m168的EEPROM为512bytes Arduino 2560的EEPROM为4K
    下面我们介绍arduino自带的EEPROM使用方法,arduino的库已经为我们准备好了EEPROM类库,我们要使用得先调用EEPROM.h,然后使用write和read方法,即可操作EEPROM。 另:下面的官方例子由于写成较早,所以讲EEPROM的大小都定为了512字节,实际使用中,大家可参照上面所说的EEPROM大小,自行更改。
    1.写入 选择 File>Examples>EEPROM>eeprom_write

    kittenblock中小学创客名师推荐的图形化编程软件

     
    /*
     
    * EEPROM Write
     
    *
     
    * Stores values read from analog input 0 into the EEPROM.
     
    * These values will stay in the EEPROM when the board is
     
    * turned off and may be retrieved later by another sketch.
     
    */
       
     
    #include <EEPROM.h>
       
     
    // EEPROM 的当前地址,即你将要写入的地址,这里就是从0开始写
     
    int addr = 0;
       
     
    void setup()
     
    {
     
    }
       
     
    void loop()
     
    {
     
      //模拟值读出后是一个0-1024的值,但每字节的大小为0-255,所以这里将值除以4再存储到val
     
      int val = analogRead(0) / 4;
     
      
     
      // write the value to the appropriate byte of the EEPROM.
     
      // these values will remain there when the board is
     
      // turned off.
     
      EEPROM.write(addr, val);
     
      
     
      // advance to the next address.  there are 512 bytes in
     
      // the EEPROM, so go back to 0 when we hit 512.
     
      addr = addr + 1;
     
      if (addr == 512)
     
        addr = 0;
     
      
     
      delay(100);
     
    }

    2.读取 选择 File>Examples>EEPROM>eeprom_read

    kittenblock中小学创客名师推荐的图形化编程软件

     
    /*
     
    * EEPROM Read
     
    *
     
    * Reads the value of each byte of the EEPROM and prints it
     
    * to the computer.
     
    * This example code is in the public domain.
     
    */
       
     
    #include <EEPROM.h>
       
     
    // start reading from the first byte (address 0) of the EEPROM
     
    int address = 0;
     
    byte value;
       
     
    void setup()
     
    {
     
      // initialize serial and wait for port to open:
     
      Serial.begin(9600);
     
      while (!Serial) {
     
        ; // wait for serial port to connect. Needed for Leonardo only
     
      }
     
    }
       
     
    void loop()
     
    {
     
      // read a byte from the current address of the EEPROM
     
      value = EEPROM.read(address);
     
      
     
      Serial.print(address);
     
      Serial.print(" ");
     
      Serial.print(value, DEC);
     
      Serial.println();
     
      
     
      // advance to the next address of the EEPROM
     
      address = address + 1;
     
      
     
      // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
     
      // on address 512, wrap around to address 0
     
      if (address == 512)
     
        address = 0;
     
       
     
      delay(500);
     
    }

    3.清除 选择 File>Examples>EEPROM>eeprom_clear 清除EEPROM的内容,其实就是把EEPROM中每一个字节写入0,因为只用清一次零,所以整个程序都在setup部分完成。

    kittenblock中小学创客名师推荐的图形化编程软件

     
    /* * EEPROM Clear
     
    *
     
    * Sets all of the bytes of the EEPROM to 0.
     
    * This example code is in the public domain.
       
     
    */
     
    #include <EEPROM.h>
       
     
    void setup()
     
    {
     
      // 让EEPROM的512字节内容全部清零
     
      for (int i = 0; i < 512; i++)
     
        EEPROM.write(i, 0);
     
       
     
      // 清零工作完成后,将L灯点亮,提示EEPROM清零完成
     
      digitalWrite(13, HIGH);
     
    }
       
     
    void loop()
     
    {
     
    }
  • 相关阅读:
    C#引用类型详细剖析(转)
    wcf问题集锦
    Emgu CV 初试
    C#语言使用习惯
    多线程和消息机制
    ArrayAdapter
    SimpleAdapter
    删除对话框
    HTML制作个人简历
    冒泡排序
  • 原文地址:https://www.cnblogs.com/MCSFX/p/10474789.html
Copyright © 2011-2022 走看看