http://www.onestudy.net/download/elec/118rw24xx_c.txt
一个通用的 24C01-24C256 共 9 种 EEPROM 的字节读写操作程序,
此程序有五个入口条件,分别为读写数据缓冲区指针,
进行读写的字节数,EEPROM 首址,EEPROM 控制字节,
以及 EEPROM 类型。此程序结构性良好,具有极好的容错性,程序机器码也不多:
#pragma ot(6,SIZE)
#include <reg52.h>
#include <intrins.h>
#define ERRORCOUNT 10
sbit SDA=P0^0;
sbit SCL=P0^1;
enum eepromtype
{M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256};
enum eepromtype EepromType;
//DataBuff 为读写数据输入/输出缓冲区的首址
//ByteQuantity 为要读写数据的字节数量
//Address 为 EEPROM 的片内地址
//ControlByte 为 EEPROM 的控制字节,具体形式为
(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中 R/W=1,
//表示读操作,R/W=0 为写操作,A2,A1,A0 为 EEPROM 的页选或片选地址;
//EepromType 为枚举变量,需为 M2401 至 M24256 中的一种,分别对应 24C01 至
24C256;
//函数返回值为一个位变量,若返回 1 表示此次操作失效,0 表示操作成功;
//ERRORCOUNT 为允许最大次数,若出现 ERRORCOUNT 次操作失效后,则函数中止
操作,并返回 1
//SDA 和 SCL 由用户自定义,这里暂定义为 P0^0 和 P0^1;
//其余的用户不用管,只要把只子程序放在你的程序中并调用它就可以了;
/********************************************************************
***************/
bit RW24XX(unsigned char *DataBuff,unsigned char
ByteQuantity,unsigned int Address,
unsigned char ControlByte,enum eepromtype
EepromType)
{
void Delay(unsigned char DelayCount);
void IICStart(void);