导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→有关AT24C512高位地址怎样读写的问题?

* 58831: 有关AT24C512高位地址怎样读写的问题?

   zjw700807 
zjw700807发表的帖子 

 有关AT24C512高位地址怎样读写的问题?
各位大虾:大家好!
    有个问题需要请教,AT24C512的程序该怎样写?帮我看看,不胜感激!
/*********************************************************************/
/* 功能定义:读取IIC中的数据,从哪个地址开始,读取多少个字符  */
/* *sIICAddress 表示起始地址,pLength表示长度  */
/* *pvalue表示要读取的数据所存入的起始地址*/
/* 函数返回值为TURE ,表示正确读取,返回值为FALSE,表示错误读取  */
/*********************************************************************/
void E_read_block(unsigned long sIICAddress, unsigned char pLength,unsigned char *pvalue)
{
        unsigned char idata i;
        unsigned int idata j;
        
        j = (unsigned int)(sIICAddress);
        
        EA = 0;

        I2CStart();
        I2CSendByte(0xA0);
        WaitAck();
        I2CSendByte(j / 256);
        WaitAck();
        I2CSendByte(j % 256);
        WaitAck();

        I2CStart();
        I2CSendByte(0xA1);
        WaitAck();

        for (i=0;i  <pLength;i++)
        {
                pvalue[i]=I2CReceiveByte();
                if (i!=pLength-1 ) SendAck();   /*除最后一个字节外,其他都要从MASTER应答。 */
        }

        SendNotAck();
        I2CStop();
        EA = 1;
}


/***********************************************************************/
/* 功能定义: 向IIC指定地址写入一个字节 */
/* input :   unsigned char address,unsigned char value */
/* output:   void */
/***********************************************************************/
void WriteSingleByte(unsigned long address,unsigned char value)
{
 unsigned int idata j;
 j = (unsigned int)(address);
        I2CStart();
        I2CSendByte(0xA0);
        WaitAck();
        I2CSendByte(j / 256);
        WaitAck();
        I2CSendByte(j % 256);
        WaitAck();
        I2CSendByte(value);
        WaitAck();
        I2CStop();
}

/*********************************************************************/
/* 功能定义:读取IIC中的数据,从哪个地址开始,读取多少个字符  */
/* sIICAddress 表示起始地址,pLength表示长度  */
/* *pvalue 表示要写入的数据*/
/* 函数返回值为TURE ,表示正确读取,返回值为FALSE,表示错误读取  */
/*********************************************************************/
void E_write_block(unsigned long sIICAddress, unsigned char pLength,unsigned char *pvalue)
{
        unsigned char idata i;
        EA = 0;
        for(i=0;i  <pLength;i++)
        {
                WriteSingleByte(sIICAddress+i,pvalue[i]);
                wait_10ms();
        }
        EA = 1;
}

AT24C512(64K*8)的高地址该怎样操作才能进行读写?



发表时间:2004年7月23日17:20:21

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:摩托车数字点火器那位大虾有摩托车数字点火器的资料,请发一份给小弟,我将送上一份LED屏的完整资料。p
[下一篇帖子]:解决了,谢谢啦。我有短消息给你啊~