⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_eeprom.h

📁 通过AT89S52的I/O口模拟IIC接口,读写控制AT24C256,适用于AT24C64、AT24C256、At24C512
💻 H
字号:
/*--------------------------------------------------------------------------
I2C_EEPROM.H
Design For :I2C_EEPROM器件( 适用于:AT24C64 / AT24C128 / At24C256 / At24C512 / 2464 / 24128 /24256 )
Author:xieqin
CopyRight:2004.9.8
--------------------------------------------------------------------------*/
#ifndef __I2C_EEPROM_H__
#define __I2C_EEPROM_H__ 

void Write_I2C_EEPROM(unsigned char nChip,unsigned int address,unsigned char *dat,unsigned char num)
{                     //nChip=器件地址,address=器件内部字节单元地址,dat=数据缓冲区首址,num=数据长度
    unsigned char i;
	Start_I2C(); //申请总线
    if(SendByte_I2C(0xa0+(nChip<<1)))return; //发送写命令 
	if(SendByte_I2C((address&0xff00)>>8))return;//发送内部地址高字节部分
    if(SendByte_I2C(address&0xff))return; //发送内部地址低字节部分
    for(i=0;i<num;i++)
    {
	  if(SendByte_I2C(*dat++))return;//发送数据
      
	}
 
	Stop_I2C(); //释放总线 

}

void Read_I2C_EEPROM(unsigned char nChip,unsigned int address,unsigned char *x,unsigned char num)
{                  //nChip=器件地址,address=器件内部字节单元地址,x=数据缓冲区首址,num=数据长度
	unsigned char i;
    //对24系列的器件而言,要读取器件内部数据必须两次申请I2C总线,
	//第一次用于设置器件内部地址指针
	//第二才以"读取当前地址单元的数据"的方式读取数据

    Start_I2C(); //申请总线
	if(SendByte_I2C(0xa0+(nChip<<1)))return; //发送写命令     
	if(SendByte_I2C((address&0xff00)>>8))return;//发送内部地址高字节部分
    if(SendByte_I2C(address&0xff))return;//发送内部地址低字节部分       


    Start_I2C(); //重新申请总线   
	if(SendByte_I2C(0xa1+(nChip<<1)))return; //发送读命令    
    
    for(i=0;i<num-1;i++)//接收前num-1个字节
   	{
	 *x++=ReadByte_I2C();
     AckS_I2C(0);//发送有效应答
     }	
	 *x++=ReadByte_I2C();//接收最后一个字节

        AckS_I2C(1); //发送无效应答 
	Stop_I2C(); //释放总线 
	
}

unsigned char CurrentAddressRead(unsigned char nChip)//从当前地址读取数据函数
{   //nChip=器件地址,函数返回读取的一字节数据
    unsigned char dat;
    Start_I2C(); //重新申请总线   
	if(SendByte_I2C(0xa1+(nChip<<1)))return; //发送读命令 (包括器件地址) 
    
    dat=ReadByte_I2C;//读取一字节数据
    AckS_I2C(1);//发回无效应答
    Stop_I2C();//释放总线
    return dat;//返回读取的数据
      
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -