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

📄 at24c256.c

📁 ucos v2.62 安装程序 附带已移植到C8051F020的UCOS源码
💻 C
字号:
#include "IIC.h"
#include "at24c256.h"

unsigned char AT24C256_ReadBlock(unsigned int blockAddress,unsigned char *recBuf);
unsigned char AT24C256_WriteBlock(unsigned int blockAddress,unsigned char *SendBuf);
unsigned char AT24C256_ReadMultiBlock(unsigned int blockAddress,unsigned int blockNum,unsigned char *recBuf);
unsigned char AT24C256_WriteMultiBlock(unsigned int blockAddress,unsigned int blockNum,unsigned char *sendBuf);


unsigned char AT24C256_ReadBlock(unsigned int blockAddress,unsigned char *recBuf)
{
    unsigned char  slaveAddress;
	unsigned int  tmp;
	unsigned char subAddress[2];
    if(blockAddress>=(AT24C256_BLOCK_SIZE*4))
	    return 0;
	if(blockAddress<AT24C256_BLOCK_SIZE)
	{
	    slaveAddress = AT24C256_ADDRESS +0x00;
		tmp = blockAddress*AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	if((blockAddress>=AT24C256_BLOCK_SIZE)&&(blockAddress<(AT24C256_BLOCK_SIZE*2)))
	{
	    slaveAddress = AT24C256_ADDRESS +0x01;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE);
		tmp *= (AT24C256_BYTE_SIZE);
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  tmp;
	}
	if(blockAddress>=AT24C256_BLOCK_SIZE*2&blockAddress<AT24C256_BLOCK_SIZE*3)
	{
	    slaveAddress = AT24C256_ADDRESS +0x02;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE*2);
		tmp *= AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	if(blockAddress>=AT24C256_BLOCK_SIZE*3&blockAddress<AT24C256_BLOCK_SIZE*4)
	{
	    slaveAddress = AT24C256_ADDRESS +0x03;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE*3);
		tmp *= AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	return SmbRec(slaveAddress,subAddress,TWO_BYTE_SUBA,AT24C256_BYTE_SIZE,recBuf);

}

unsigned char AT24C256_WriteBlock(unsigned int blockAddress,unsigned char *SendBuf)
{
    unsigned char  slaveAddress;
	unsigned int  tmp;
	unsigned char subAddress[2];
    if(blockAddress>=AT24C256_BLOCK_SIZE*4)
	    return 0;
	if(blockAddress<AT24C256_BLOCK_SIZE)
	{
	    slaveAddress = AT24C256_ADDRESS +0x00;
		tmp = blockAddress*AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	if(blockAddress>=AT24C256_BLOCK_SIZE&blockAddress<AT24C256_BLOCK_SIZE*2)
	{
	    slaveAddress = AT24C256_ADDRESS +0x01;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE);
		tmp *= AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	if(blockAddress>=AT24C256_BLOCK_SIZE*2&blockAddress<AT24C256_BLOCK_SIZE*3)
	{
	    slaveAddress = AT24C256_ADDRESS +0x02;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE*2);
		tmp *= AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	if(blockAddress>=AT24C256_BLOCK_SIZE*3&blockAddress<AT24C256_BLOCK_SIZE*4)
	{
	    slaveAddress = AT24C256_ADDRESS +0x03;
		tmp = (blockAddress-AT24C256_BLOCK_SIZE*3);
		tmp *= AT24C256_BYTE_SIZE;
		subAddress[0] = (unsigned char) (tmp>>8);
		subAddress[1] =	(unsigned char)  (tmp);
	}
	return SmbSend(slaveAddress,subAddress,TWO_BYTE_SUBA,AT24C256_BYTE_SIZE,SendBuf);
}

unsigned char AT24C256_ReadMultiBlock(unsigned int blockAddress,unsigned int blockNum,unsigned char *recBuf)
{	 
    unsigned char tmp;
	unsigned char tmp1;
    for(tmp=0;tmp<blockNum;tmp++)
	{
	   tmp1 = AT24C256_ReadBlock(blockAddress,(recBuf+AT24C256_BYTE_SIZE*tmp));
	   if(tmp1== 0)
	   {
	       return 0;
	   }
	   blockAddress++;
	}
	return 1;
}
unsigned char AT24C256_WriteMultiBlock(unsigned int blockAddress,unsigned int blockNum,unsigned char *sendBuf)
{
    unsigned char tmp;
	unsigned char tmp1;
    for(tmp=0;tmp<blockNum;tmp++)
	{
	   tmp1 = AT24C256_WriteBlock(blockAddress,sendBuf+AT24C256_BYTE_SIZE*tmp);
	   if(tmp1 == 0)
	   {
	       return 0;
	   }

	   blockAddress++;
	}
	return 1; 
}













⌨️ 快捷键说明

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