欧阳翊枫 发表于 2016-9-11 22:49:43

EEPROM作为标志位首次运行出了问题

#include <EEPROM.h>
void setup()
{
   Serial.begin(9600);
}

void loop()
{
   int asd=EEPROM.read(20);
Serial.println(asd);
if(asd==1)
{Serial.println(2);
    ROTINH();
   EEPROM.write(20,0);
}
while(1);

}


void ROTINH()
{}

运行后检测第20地址的数据(默认为1),但在串口显示时Serial.println(asd)却是0。所以不会进入if语句。但却执行EEPROM.write(20,0);请教各位大神这是怎么回事

275891381 发表于 2016-9-12 08:00:59

默认值为1,不排除被改写过,先全部改写一遍再试试吧

欧阳翊枫 发表于 2016-9-12 08:06:14

275891381 发表于 2016-9-12 08:00
默认值为1,不排除被改写过,先全部改写一遍再试试吧

下载之前已经清理了,并赋值为1

275891381 发表于 2016-9-12 08:29:49

欧阳翊枫 发表于 2016-9-12 08:06
下载之前已经清理了,并赋值为1

你自己另外的程序清理的吗 建议你写个程序把512个都读出来看看是啥,

欧阳翊枫 发表于 2016-9-12 08:44:56

275891381 发表于 2016-9-12 08:29
你自己另外的程序清理的吗 建议你写个程序把512个都读出来看看是啥,

对,使用前已经清理了。

275891381 发表于 2016-9-12 09:11:43

欧阳翊枫 发表于 2016-9-12 08:44
对,使用前已经清理了。

我的正常 建议你下载下面的清理下 再下载你自己的程序#include <EEPROM.h>
void setup()
{
   Serial.begin(9600);
   for(int i=0;i<512;i++)
   {
      EEPROM.update(i,1);
      int asd=EEPROM.read(i);
       Serial.println(asd);
       }
}

void loop()
{


}

欧阳翊枫 发表于 2016-9-12 11:39:29

275891381 发表于 2016-9-12 09:11
我的正常 建议你下载下面的清理下 再下载你自己的程序

测试了,还是不行。if语句还是不执行。
#include <EEPROM.h>
void setup()
{
   Serial.begin(9600);

}

void loop()
{
int a=EEPROM.read(1);
Serial.println(a);
if(a==1)
{
Serial.println(2);
EEPROM.write(1,0);
}
while(1);

}

275891381 发表于 2016-9-12 16:01:16

欧阳翊枫 发表于 2016-9-12 11:39
测试了,还是不行。if语句还是不执行。
#include
void setup()


我用的 uno 可以的 那就无能为力了

欧阳翊枫 发表于 2016-9-12 20:55:29

275891381 发表于 2016-9-12 16:01
我用的 uno 可以的 那就无能为力了

我用UNO试了下还是不行啊,唉头疼死
页: [1]
查看完整版本: EEPROM作为标志位首次运行出了问题