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);请教各位大神这是怎么回事 默认值为1,不排除被改写过,先全部改写一遍再试试吧 275891381 发表于 2016-9-12 08:00
默认值为1,不排除被改写过,先全部改写一遍再试试吧
下载之前已经清理了,并赋值为1 欧阳翊枫 发表于 2016-9-12 08:06
下载之前已经清理了,并赋值为1
你自己另外的程序清理的吗 建议你写个程序把512个都读出来看看是啥, 275891381 发表于 2016-9-12 08:29
你自己另外的程序清理的吗 建议你写个程序把512个都读出来看看是啥,
对,使用前已经清理了。 欧阳翊枫 发表于 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()
{
} 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);
} 欧阳翊枫 发表于 2016-9-12 11:39
测试了,还是不行。if语句还是不执行。
#include
void setup()
我用的 uno 可以的 那就无能为力了 275891381 发表于 2016-9-12 16:01
我用的 uno 可以的 那就无能为力了
我用UNO试了下还是不行啊,唉头疼死
页:
[1]