一个24C读写函数,支持检测器件型号

发布者:RadiantGlow最新更新时间:2015-07-15 来源: 51hei关键字:读写函数  检测器件型号 手机看文章 扫描二维码
随时随地手机看文章
这个程序我检测过24C02,24C16,24C04,24C64,24C32,均未出错。也没有毁损器件内部数据的问题。可靠性比较好。在我的编程器中已经使用。此程序write by 万致远,在sdcc v3.1.0中无错误/warning编译。死太惨89C52中通过。

上代码:
 

/* FILE 24C.C
Write by 万致远
*/
#include 
#include 
#include 
#include 
#include <24c.h>
#define AT24C02_DeviceAdd_W 0xa0	//器件地址(写)
#define AT24C02_DeviceAdd_R 0xa1	//器件地址(读)
#define ADD_TYPE_8	0
#define ADD_TYPE_16	1
#define AT24C01		0
#define AT24C02		1
#define AT24C04		2
#define AT24C08		3
#define AT24C16		4
#define AT24C32		5
#define AT24C64		6
#define AT24C128	7
#define AT24C256	8
#define AT24C512	9
#define AT24C1024	10
#define SCAN_ERROR	0xFF
ULONG __code Length_Chip[11]={
0x7f,0xff,0x1ff,0x3ff,0xfff,0x7ff,0x1fff,0x3fff,0x7fff,0xffff,0x1ffff
};//各类ROM的容量表~	
BYTE __code TEST_DATA[2]={0xAA,0xBB};	//测试数据
#define W_DELAY 4   //4 ms DELAY 		
//----------------------------------------------
//24C操作函数,页写。
//IIC_ADDR器件地址
//Address 16BIT地址
//TYPE	地址模式
//Data指针
//Len长度
//本函数不支持翻页,请自行翻页,控制IIC_Addr
BOOL RW24(BYTE IIC_Addr,UINT Address,BOOL Type,BYTE *Data,BYTE Len)
{
	BYTE i=0;
	//----------------------------选中芯片程序开始-----------
	I2C_Start();	// 启动I2C总线
	I2C_Write8Bit(IIC_Addr & 0xFE);					// 发送器件地址(写)1111 1110
	if( I2C_Check_Ack() == 0 )                		// 检测从机应答
			{I2C_Stop();return 0;	  }
	if (Type==ADD_TYPE_8)
	{//8位地址的话
		I2C_Write8Bit(Address);   				// 发送将要处理的数据的地址,8位
	}
	else
	{//16位地址的话
		I2C_Write8Bit(((Address & 0xFF00)>>8));			//发送高八位地址
		if( I2C_Check_Ack() == 0 )                		// 检测从机应答
			{I2C_Stop();return 0;	  }
		I2C_Write8Bit((Address & 0xFF));	//低八位地址发送
	}
	if( I2C_Check_Ack() == 0 )                		// 检测从机应答
			{I2C_Stop();return 0;	  }
	//---------------------------------结束-------------------
	if((IIC_Addr & 0x01)==1)
	{//是读操作
		*Data=0xFF;									//FF=NULL
		I2C_Start();				         		// 再次启动IIC总线
		I2C_Write8Bit(IIC_Addr);					//发送读出地址
		if( I2C_Check_Ack() == 0 )                // 检测从机应答
			{I2C_Stop();return 0;	  }
		*Data = I2C_Read8Bit();		         	   // 读取第一个数据
		Data++;
		for(i=1;i

完整版本的代码下载地址: http://www.51hei.com/f/dfd33.rar

关键字:读写函数  检测器件型号 引用地址:一个24C读写函数,支持检测器件型号

上一篇:一个红外线发射+解码程序+仿真文件
下一篇:地址转换-51单片机C编程

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved