找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3921|回复: 4
收起左侧

关于AT24C08芯片存储空间

[复制链接]
ID:825883 发表于 2020-12-9 10:51 | 显示全部楼层 |阅读模式
编了一个程序,将一个字节0X0F写入AT24C08芯片的0X36处再读出,由P1口显示,运行良好。
主程序如下
main(void)
{
SDA=1;
SCL=1;
WriteSet(0x36,0x0f);
P1=ReadSet(0x36);
}

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

使用道具 举报

ID:401564 发表于 2020-12-9 17:18 | 显示全部楼层
AT24C08是8192个字节(8K)!
AT24C01才是1K的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:825883 发表于 2020-12-9 20:53 | 显示全部楼层
Y_G_G 发表于 2020-12-9 17:18
AT24C08是8192个字节(8K)!
AT24C01才是1K的

谢谢,
8K字节最大地址0X2001,把写入地址改为0X2001,此时应溢出,为何运行还是没问题呢?
回复

使用道具 举报

ID:401564 发表于 2020-12-9 21:36 | 显示全部楼层
33943417 发表于 2020-12-9 20:53
谢谢,
8K字节最大地址0X2001,把写入地址改为0X2001,此时应溢出,为何运行还是没问题呢?

没有试过写入超过地址以外的
24C08是配合A0,A1写入地址的
所谓的错误提示指的是什么?我不知道
回复

使用道具 举报

ID:517466 发表于 2020-12-10 00:04 | 显示全部楼层
个人理解哈,24C08内部是1K字节。肯定是有地址寄存器这样的寄存器,用于保存要访问的单元。因为是1K的,意味着需要两个字节保存地址。对1K,16进制表达的地址空间是:0x000 - 0x3FF。也就是说,24C08内部只要在处理地址单元的时候,和0x3FF进行与处理后,再把这个值作为真正的地址,去访问内部存储空间,就没有任何问题的。这个时候0x401相当于0x001这个地址了。道理上和寄存器数据溢出差不多。
你可以实验一下,修改0x401这个地址的数据,然后到0x001去的数据,看看是不是一样,就能证明了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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