用51单片机给at24c16与at24c02编程上的区别和要注意些什么,程序的写法有那些不同,比如

用51单片机给at24c16与at24c02编程上的区别和要注意些什么,程序的写法有那些不同,比如地址什么的小弟我用at24c02的程序用在at24c16上就不能用了,好... 用51单片机给at24c16与at24c02编程上的区别和要注意些什么,程序的写法有那些不同,比如 地址 什么的

小弟我用at24c02的程序用在at24c16上就不能用了,好像是地址的问题,求高手解答
小弟感激不尽
展开
 我来答
糖炒栗子的小店
推荐于2018-04-06
知道答主
回答量:12
采纳率:0%
帮助的人:6万
展开全部

没什么太大的不同,AT24C02 读写时要指定地址 A2 A1 A0 ,这就是芯片上这3支管脚的接法,而 AT24C16 不用指定地址但是因为容量比较大因此要选定所要读写的页(PAGE)。

更多追问追答
追问
意思是不是用单片机控制at24c16的话电路不能像控制at24c02那样接,
是不是要单独把P0~2这3个管脚接到单片机的IO上单独控制
11kxmx
2018-04-05 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2481万
展开全部
肯定是地址的问题
at24c16是2K字节,需地址位数11位,低8位和24c02一样只能0到 255
高8位中高4位仍是1010 ,其余3位任意变化,最低位仍是读写控制位
如果当24c02应该不存在问题,只是只能读写256个字节
从24c16的地址address中读取一个字节数据/////
unsigned char x24c16_read(uint address)
{
unsigned char i;
uchar addr_h,addr_h1,addr_l;
addr_h=address/256;//高位地址
addr_h1=addr_h*2;//高位地址左移1位
addr_l=address%256;//低位地址
start();
writex(0xa0+addr_h1);
clock(); writex(addr_l);
clock(); start();
writex((0xa1+addr_h1)); clock();
i=readx(); stop();
delay1(10);
return(i);
}
//////向24c16的address地址中写入一字节数据info/////
void x24c16_write(uint address,unsigned char info)
{
uchar addr_h,addr_h1,addr_l;
addr_h=address/256;
addr_h1=addr_h*2;
addr_l=address%256;
EA=0;
start(); writex(0xa0+addr_h1);//240C16应该是 writex(addr_h1+1)
clock(); writex(address);
clock(); writex(info);
clock(); stop();
EA=1;
delay1(50);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w05717011
2015-06-23 · TA获得超过295个赞
知道小有建树答主
回答量:255
采纳率:83%
帮助的人:110万
展开全部
at24c16与at24c02程序没有区别,唯一区别就是内存大小,一个是2K,一个是16K的,2K的地址只能用到256,16K地址能用到2048,应该不存在at24c02的程序在at24c16上不能用吧??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式