搜索
bottom↓
回复: 2

是不是我的指针用的不对?EEPROM页读出的数据始终不对

[复制链接]

出0入0汤圆

发表于 2014-11-27 16:43:15 | 显示全部楼层 |阅读模式
void DispMenuTopUp()//菜单函数,在Menu.c文件
{
  unsigned char i,data[16];
  for(i=0;i<16;i++) { data = i;}//数值初始化
Clock_I2C_EEPROM_PageWrite(0,16,data);//写进去,用EEPROM随机读函数可以读出正确的数据
//  for(i=0;i<16;i++) { data = 0;         }
Clock_I2C_EEPROM_PageRead(0,16,data); //页读,读出来
i=data[1];                            //赋值
lcd_display_zifu(1,1,shuzi[i/100],0);   //显示值,应该是001,去始终是255
lcd_display_zifu(2,1,shuzi[i/10%10],0);
lcd_display_zifu(3,1,shuzi[i%10],0);
}

//EEPROM页读函数,在eeprom.c文件
void Clock_I2C_EEPROM_PageRead (unsigned char ReadPage,unsigned char NumByteToRead,unsigned char *p)
{
    unsigned int ReadAddr;  
    ReadAddr = ReadPage*16+64;//计算每页的首地址(跳过0-3f空间)  
    while(NumByteToRead--)
        {*p++ = Clock_I2C_EEPROM_RandomRead(ReadAddr++);}//读数据  
}

//  EEPROM随机读函数,在eeprom.c文件 此函数使用正常
unsigned char Clock_I2C_EEPROM_RandomRead(unsigned int ReadAddr)
{        unsigned char Data;   
        I2C_Start();//  IIC开始
        Send_Data(EEPROM_White_Addr); //送RTC写寻址地址
        Send_Data(ReadAddr >> 8);     //送目标地址H
        Send_Data(ReadAddr & 0x00ff); //送目标地址L  
        I2C_Start();//  IIC再开始
        Send_Data(EEPROM_Read_Addr);//送RTC读寻址地址
        Data = Receive_Data(NOACKbit);//读数据
           I2C_Stop(); //IIC结束
        return Data;
}

出0入0汤圆

发表于 2014-11-27 19:30:23 | 显示全部楼层
楼主还是用插入代码的方式贴出来吧,即使是直接贴文本也别用斜体字吧,斜体真的没法看。

出0入0汤圆

 楼主| 发表于 2014-11-28 19:47:00 | 显示全部楼层
本帖最后由 fangjikun 于 2014-11-28 19:48 编辑

void DispMenuTopUp()//菜单函数,在Menu.c文件
{
  unsigned char i,data[16];
  for(i=0;i<16;i++) { data = i;}//数值初始化
Clock_I2C_EEPROM_PageWrite(0,16,data);//写进去,用EEPROM随机读函数可以读出正确的数据
//  for(i=0;i<16;i++) { data = 0;         }
Clock_I2C_EEPROM_PageRead(0,16,data); //页读,读出来
i=data[1];                            //赋值
lcd_display_zifu(1,1,shuzi[i/100],0);   //显示值,应该是001,去始终是255
lcd_display_zifu(2,1,shuzi[i/10%10],0);
lcd_display_zifu(3,1,shuzi[i%10],0);
}

//EEPROM页读函数,在eeprom.c文件
void Clock_I2C_EEPROM_PageRead (unsigned char ReadPage,unsigned char NumByteToRead,unsigned char *p)
{
    unsigned int ReadAddr;  
    ReadAddr = ReadPage*16+64;//计算每页的首地址(跳过0-3f空间)  
    while(NumByteToRead--)
        {*p++ = Clock_I2C_EEPROM_RandomRead(ReadAddr++);}//读数据  
}

//  EEPROM随机读函数,在eeprom.c文件 此函数使用正常
unsigned char Clock_I2C_EEPROM_RandomRead(unsigned int ReadAddr)
{        unsigned char Data;   
        I2C_Start();//  IIC开始
        Send_Data(EEPROM_White_Addr); //送RTC写寻址地址
        Send_Data(ReadAddr >> 8);     //送目标地址H
        Send_Data(ReadAddr & 0x00ff); //送目标地址L  
        I2C_Start();//  IIC再开始
        Send_Data(EEPROM_Read_Addr);//送RTC读寻址地址
        Data = Receive_Data(NOACKbit);//读数据
           I2C_Stop(); //IIC结束
        return Data;
}

昨天捣鼓也没弄好,始终是斜体,今天回复下就好了,奇怪
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 08:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表