打印

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

[复制链接]
1370|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝