24C08的读写

[复制链接]
10493|12
 楼主| robotics30 发表于 2011-8-1 14:21 | 显示全部楼层 |阅读模式
大家好,
24C08的读写程序如下,其中地址是uchar型的,取值范围是0-256,但24C08的容量是1024个BYTE,我试了一下,用write_add(896,78),然后再read_add(896),读出的数字是78,但让我疑惑的是,地址896早就超出了uchar的范围了啊.这是什么原因呢?

void write_add(uchar address,uchar date)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add(uchar address)
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
ayb_ice 发表于 2011-8-1 14:54 | 显示全部楼层
读写都是字节地址,虽不标准,但其实是同一个地址
liang7143 发表于 2011-8-1 15:11 | 显示全部楼层
2l正解
lixiaoxu2meng 发表于 2011-8-1 15:18 | 显示全部楼层
本帖最后由 lixiaoxu2meng 于 2011-8-1 15:22 编辑

楼主的 将896 赋给 一个八位字符 假如 char  data ;
data= 0x0380;896对应的16进制数位0x0380 ;
转换成二进制 data= 110000000

溢出的部分去掉
data= 10000000
所以data= 0x80
实际楼主是对 地址0x80操作 所以不会出错
ayb_ice 发表于 2011-8-1 17:05 | 显示全部楼层
只发送一个字节地址,相当于只改写了高字节地址寄存器,而低地址寄存器不变
 楼主| robotics30 发表于 2011-8-1 21:10 | 显示全部楼层
楼主的 将896 赋给 一个八位字符 假如 char  data ;
data= 0x0380;896对应的16进制数位0x0380 ;
转换成二进制 data= 110000000

溢出的部分去掉
data= 10000000
所以data= 0x80
实际楼主是对 地址0x80操作 所以 ...
lixiaoxu2meng 发表于 2011-8-1 15:18

恩,是的,那么对于0XFF以后的地址,如何读写啊?
 楼主| robotics30 发表于 2011-8-1 21:27 | 显示全部楼层
楼主的 将896 赋给 一个八位字符 假如 char  data ;
data= 0x0380;896对应的16进制数位0x0380 ;
转换成二进制 data= 110000000

溢出的部分去掉
data= 10000000
所以data= 0x80
实际楼主是对 地址0x80操作 所以 ...
lixiaoxu2meng 发表于 2011-8-1 15:18


我做了试验,地址0X80的内容和地址896的内容完全一样.
那么24C08中,只有地址0X00---0XFF空间可以使用,从地址0XFF--0X400的EEPROM空间该如何读写呢?
ningling_21 发表于 2011-8-1 22:02 | 显示全部楼层
好像要改变器件地址,例如:把0xa0(第0页) 改为 0xa2(第1页)
如果不对,请纠正...
lixiaoxu2meng 发表于 2011-8-2 08:00 | 显示全部楼层
可以通过 A2 A1 A0 进行页选
看一下芯片手册
 楼主| robotics30 发表于 2011-8-2 10:09 | 显示全部楼层
对于24c04、8、16来说,其控制字后面的 A0、A1、A2 已经变为 P0、P1、P2;通过这是页选就可以寻址到 8*2k 空间。
zdhwangep 发表于 2011-8-7 18:16 | 显示全部楼层
赞同楼上
wei556675 发表于 2015-9-29 20:48 | 显示全部楼层
请问你最后是怎么解决的啊、
yaosongjin 发表于 2015-10-9 14:06 | 显示全部楼层
robotics30 发表于 2011-8-1 21:27
我做了试验,地址0X80的内容和地址896的内容完全一样.
那么24C08中,只有地址0X00---0XFF空间可以使用,从地 ...

将函数的形参改为unsigned int型,应该就可以了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

41

帖子

0

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