打印

关于写24lc08如何换页的问题

[复制链接]
4041|16
手机看帖
扫描二维码
随时随地手机跟帖
沙发
110xia| | 2008-9-3 09:11 | 只看该作者

可以写之前算一下地址,操作一页,分开写

使用特权

评论回复
板凳
cyfwy|  楼主 | 2008-9-3 09:33 | 只看该作者

谢谢

比如说我从地址0000~000F这一页写完之后,怎么让写入地址变成0010开始。
给个小程序给我参考下咯。

使用特权

评论回复
地板
lyjian| | 2008-9-3 09:43 | 只看该作者

写完0000~000F后,重发一个地址0010不就是下一页地址了

都不看规格书的

使用特权

评论回复
5
zyok| | 2008-9-3 10:08 | 只看该作者

换页

         /*addr:开始地址,n:字节总数*/
         page = 0;
    for(i=addr+1;i<addr+n;i++)//检查是否有换页
    {
        if((i % 16) == 0)
        {
            num  = n;           //备份总字节总数
            page = i;           //第二页的首地址
            n    = page - addr;//第一页字节数
        }
    }

WR_PAGE:
         ...;
         ...;

        if(page != 0)      //有第二页
    {
        n =    num - n;   //第二页字节数
        addr = page;   //第二页首地址
        page = 0;       //标志清零
        goto WR_PAGE;//写第二页
    } 

使用特权

评论回复
6
cyfwy|  楼主 | 2008-9-3 15:02 | 只看该作者

请问

请问24lc08在 00ff之后应该是什么地址,应该是0100吗
但是我的程序这么写,却把我0000~000f的内容给覆盖掉了。怎么回事?


        Write24c08(addw1,0x0000,16);//                   Write24c08(addw2,0x0010,16);
        Write24c08(addw3,0x0020,16);
        Write24c08(addw4,0x0030,16);
        Write24c08(addw5,0x0040,16);
        Write24c08(addw6,0x0050,16);                  Write24c08(addw7,0x0060,16);
        Write24c08(addw8,0x0070,16);
        Write24c08(addw9,0x0080,16);
        Write24c08(addw10,0x0090,16);
        Write24c08(addw11,0x00a0,16);                  Write24c08(addw12,0x00b0,16);
        Write24c08(addw13,0x00c0,16);
        Write24c08(addw14,0x00d0,16);
        Write24c08(addw15,0x00e0,16);
        Write24c08(addw16,0x00f0,16);                 Write24c08(addw17,0x0100,16);

使用特权

评论回复
7
cyfwy|  楼主 | 2008-9-3 15:06 | 只看该作者

刚才没写好,是这样的

刚才没写好,是这样的
Write24c08(addw1,0x0000,16);
Write24c08(addw2,0x0010,16);
Write24c08(addw3,0x0020,16);
Write24c08(addw4,0x0030,16);
Write24c08(addw5,0x0040,16);
Write24c08(addw6,0x0050,16);
Write24c08(addw7,0x0060,16);
Write24c08(addw8,0x0070,16);
Write24c08(addw9,0x0080,16);
Write24c08(addw10,0x0090,16);
Write24c08(addw11,0x00a0,16);
Write24c08(addw12,0x00b0,16);
Write24c08(addw13,0x00c0,16);
Write24c08(addw14,0x00d0,16);
Write24c08(addw15,0x00e0,16);
Write24c08(addw16,0x00f0,16);
Write24c08(addw17,0x100,16);

使用特权

评论回复
8
zjh006| | 2008-9-3 17:07 | 只看该作者

可能是地址高位写错了

使用特权

评论回复
9
lyjian| | 2008-9-3 17:17 | 只看该作者

24C08的高两位地址在控制字(器件地址字节)中写

都不看规格书的

使用特权

评论回复
10
ayb_ice| | 2008-9-4 09:09 | 只看该作者

只要保证每次写在同一页即可

使用特权

评论回复
11
cyfwy|  楼主 | 2008-9-4 09:12 | 只看该作者

我看了啊

我看了规格书,但是看不懂啊,理解不透彻,不知道应该怎么改

规格书上说:主器件发送的第二个字节是地址字节(128位~16K器件)或高位地址字节(32~512K位器件),在高位地址字节之后传送的是低位地址字节。这两种情况下,24xx器件会对每一个地址字节做出确认,并把地址位锁存进器件内部的地址锁存器。对于24xx00器件,只使用地址字节的低4位。高4位可为任意值。

我用的是24lc08,怎么理解啊。

使用特权

评论回复
12
cyfwy|  楼主 | 2008-9-4 09:36 | 只看该作者

请问

是不是我在寻址地址之后,先发一个0x01,在发一个0x10 就是我要的地址0x0110啊?

使用特权

评论回复
13
lyjian| | 2008-9-4 09:42 | 只看该作者

不是

"01"高位地址在控制字中写,即先写"A2",再写地址字节"10"。
24LC08只有一个地址字节。
看下面的图:

使用特权

评论回复
14
ayb_ice| | 2008-9-4 09:59 | 只看该作者

这个LC08是有点不一样啊,

不过以前的程序修改一下也很快

使用特权

评论回复
15
cyfwy|  楼主 | 2008-9-4 10:04 | 只看该作者

谢谢

嗯嗯,谢谢谢谢,我理解了,我去改改看。

使用特权

评论回复
16
lyjian| | 2008-9-4 10:07 | 只看该作者

所有24C08的地址都这样定义,没什么不一样

唯一不一样的地方就是:24LC08控制字中的"X"位在别的一些24C08中是器件地址位而已。

使用特权

评论回复
17
cyfwy|  楼主 | 2008-9-4 10:10 | 只看该作者

谢谢

谢谢谢谢,问题解决了,理解的相当透彻。多谢你的图啊lyjian

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

53

帖子

0

粉丝