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

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

  
楼 主:zjw700807 2004年7月23日17:20
 有关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)的高地址该怎样操作才能进行读写?


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:摩托车数字点火器

[下一篇主题]:我的一个关于射频和监控的网站 www.hkux.com,欢迎交流