标题: 关于AT24C08芯片存储空间 [打印本页]

作者: 33943417    时间: 2020-12-9 10:51
标题: 关于AT24C08芯片存储空间
编了一个程序,将一个字节0X0F写入AT24C08芯片的0X36处再读出,由P1口显示,运行良好。
主程序如下
main(void)
{
SDA=1;
SCL=1;
WriteSet(0x36,0x0f);
P1=ReadSet(0x36);
}

根据教材,AT24C08的空间为1024字节,用16进制表示为0x400,如把该字节写入到0X401应该有出错提示或无法写入,但是运行良好。为什么呢?

作者: Y_G_G    时间: 2020-12-9 17:18
AT24C08是8192个字节(8K)!
AT24C01才是1K的
作者: 33943417    时间: 2020-12-9 20:53
Y_G_G 发表于 2020-12-9 17:18
AT24C08是8192个字节(8K)!
AT24C01才是1K的

谢谢,
8K字节最大地址0X2001,把写入地址改为0X2001,此时应溢出,为何运行还是没问题呢?
作者: Y_G_G    时间: 2020-12-9 21:36
33943417 发表于 2020-12-9 20:53
谢谢,
8K字节最大地址0X2001,把写入地址改为0X2001,此时应溢出,为何运行还是没问题呢?

没有试过写入超过地址以外的
24C08是配合A0,A1写入地址的
所谓的错误提示指的是什么?我不知道
作者: suncat0504    时间: 2020-12-10 00:04
个人理解哈,24C08内部是1K字节。肯定是有地址寄存器这样的寄存器,用于保存要访问的单元。因为是1K的,意味着需要两个字节保存地址。对1K,16进制表达的地址空间是:0x000 - 0x3FF。也就是说,24C08内部只要在处理地址单元的时候,和0x3FF进行与处理后,再把这个值作为真正的地址,去访问内部存储空间,就没有任何问题的。这个时候0x401相当于0x001这个地址了。道理上和寄存器数据溢出差不多。
你可以实验一下,修改0x401这个地址的数据,然后到0x001去的数据,看看是不是一样,就能证明了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1