难道是单片机本身的问题??

[复制链接]
 楼主| victor3l 发表于 2012-9-22 21:43 | 显示全部楼层 |阅读模式
我把参数设置完毕后保存到eeprom中了其中有一个参数总是有问题。我先检查是不是写进去了,检查后是写进去了(写过之后我立即读出来)。eeprom读函数
void ReadEeprom(void)
{
uchar i;
decNum = IapReadByte(0x8000);                                //读出小数位信息
/* if(2 == decNum)//通过测试发现在写入的情况下这里读到小数信息
  {
   while(1)
   {
    LoadDat(0x60,0x82);
    DispOn();
   }
  }*/
divNum = IapReadByte(0x8200);                                //读出显示分度值
traNum = IapReadByte(0x8400);                                //读出零点跟踪值
delNum = IapReadByte(0x8600);                                //读出清零开关值
for( i = 0;i < 5; i++)                                       //读出限重值
{
  capInit[i] = IapReadByte(0x8800 + i);
}
for(i = 0; i < 6; i++)                                       //读出各个通道开启或关闭的信息.
{
  OnOff[i] = IapReadByte(0x8a00 + i);
}
for(i = 0; i < 5; i++)                                      //读出通道1的系数
{
  factorOne[i] = IapReadByte(0x8c00 + i);
}
for(i = 0; i < 5; i++)                                      //读出通道2的系数
{
  factorTwo[i] = IapReadByte(0x8e00 + i);
}
for(i = 0; i < 5; i++)                                      //读出通道3的系数
{
  factorThi[i] = IapReadByte(0x9000 + i);
}
for(i = 0; i < 5; i++)                                      //读出通道4的系数
{
  factorFou[i] = IapReadByte(0x9200 + i);
}

}

在这个函数中我在读一遍任然能读出来。但是我在主函数中这样写
void main()
{
    Init();
    EA  = 1;
   ReadEeprom();
    if(2 == decNum)//通过测试发现在写入的情况下这里任然没有读到小数信息
{
  while(1)
  {
   LoadDat(0x60,0x82);
   DispOn();
  }
}
while(1)
   {
        XXXX....
    }
}


就是上面的decNum参数,为什么在主函数中经过ReadEeprom(void)
之后decNum就不对了?他本身是个全局变量,其他的参数我也是这么做的,都能检测到,位什么唯独他不能?
NE5532 发表于 2012-9-23 21:28 | 显示全部楼层
楼主连硬件条件都没给,不好分析啊。但是肯定不是单片机自己的问题,否则这样的产品不可能面世的。
coody 发表于 2012-9-24 10:02 | 显示全部楼层
一般来说,市场量卖的MCU,不要轻易怀疑MCU有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

308

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部