24c04读写uint型数据

[复制链接]
2321|10
 楼主| 留声而过 发表于 2014-7-3 07:04 | 显示全部楼层 |阅读模式
提示: 该帖被管理员或版主屏蔽
ayb_ice 发表于 2014-7-3 08:04 | 显示全部楼层
明显是程序有问题

写完有延时或查询完成吗
ningling_21 发表于 2014-7-3 08:30 | 显示全部楼层
这样写不够简练,不如调用用一个程序就搞定...

如:Rd_nbyte(uint addr,uchar len,uchar *buff);//起始地址,数据长度,指针

Wr_nbyte(uint addr,uchar len,uchar *buff);

Wr_nbyte(2001,2,i2c_buf); //写入2个字节
原野之狼 发表于 2014-7-3 09:04 | 显示全部楼层
贴出的代码不足以说明问题,可能底层的实现有些问题。
lu50211 发表于 2014-7-3 14:14 | 显示全部楼层
本帖最后由 lu50211 于 2014-7-3 14:20 编辑

void write_twobyte(uint addr,uint datt)
{ uchar a,b;
a=(datt/256);
Write_Byte_24C(addr,a);;;;;;;;
Write_Byte_24C(addr+1,datt);;;;;;
}

楼主,是你写入的数据有误,你看这句:Write_Byte_24C(addr+1,datt);;;;;;
这是写datt数据,16位,而C02不支持16位。改成如下应该就可以了。

void write_twobyte(uint addr,uint datt)
{ uchar a,b;
a=(datt/256);    //拆分数据高8位
b=(datt%256); //拆分数据低8位
Write_Byte_24C(addr,a);;;;;;;;//写高位数据
Write_Byte_24C(addr+1,b);;;;;;//写低位数据
}
ayb_ice 发表于 2014-7-3 16:36 | 显示全部楼层
lu50211 发表于 2014-7-3 14:14
void write_twobyte(uint addr,uint datt)
{ uchar a,b;
a=(datt/256);

LZ的是可以的
这样的情况数据会自动截断的
 楼主| 留声而过 发表于 2014-7-3 22:17 | 显示全部楼层
ningling_21 发表于 2014-7-3 08:30
这样写不够简练,不如调用用一个程序就搞定...

如:Rd_nbyte(uint addr,uchar len,uchar *buff);//起始地 ...

前辈,我的指针学的还不是很好!  你可以帮我看看程序有没有问题吗?
ningling_21 发表于 2014-7-3 22:31 | 显示全部楼层
留声而过 发表于 2014-7-3 22:17
前辈,我的指针学的还不是很好!  你可以帮我看看程序有没有问题吗?

先把双字节地址该为单字节地址试试吧...
 楼主| 留声而过 发表于 2014-7-3 22:43 | 显示全部楼层
ningling_21 发表于 2014-7-3 22:31
先把双字节地址该为单字节地址试试吧...

uchar型数据写入没有问题,但是只要在任意地址写入一个数据,其它地址读出的也都是这个数据的值。
ayb_ice 发表于 2014-7-4 07:49 | 显示全部楼层
ningling_21 发表于 2014-7-3 22:31
先把双字节地址该为单字节地址试试吧...

人家是24C04
地址就是双字节
ningling_21 发表于 2014-7-4 08:19 | 显示全部楼层
留声而过 发表于 2014-7-3 22:43
uchar型数据写入没有问题,但是只要在任意地址写入一个数据,其它地址读出的也都是这个数据的值。 ...



对比这个时序和你的程序,看看不同之处...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1威望 +1 收起 理由
留声而过 + 1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

52

帖子

2

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