/****************************************************
2009-3-9 11:38:44 auto create! Ver 1.0
mcuCode2.0 help you! tony.hehui@163.com
24C01-24C16 (1Kb-16Kb)Addr_ByteNum==1
24C32-24M04 (32Kb-4Mb)Addr_ByteNum==2
you neednot edit this file(eeprom.c)
AddrDev:Address of Dev.如24C08占用bit2,bit1
而24C16占用bit3,bit2,bit1而您用两个24C08,
那么地址就决定您的硬件
Addr:EEprom的地址,如果<24C16(16K)则为1Byte,反之为2Byte
返回:EEprom_bool为0为错误,否则成功。
****************************************************/
#define Eeprom_c
#include "Eeprom.h"
static void _Eeprom_1us(unsigned char len)
{
// ToDo:Add your code here
while(len!=0)
{
defDelay1us;
len--;
}
}
static void _Eeprom_Send8Bit(unsigned char Data)
{
// ToDo:Add your code here
unsigned char bitnum;
_SDA_Out;
for(bitnum=8;bitnum!=0;bitnum--)
{
if(Data<0x80)//0
{_SDA_0;}
else
{_SDA_1;}
_SCK_1;
_Eeprom_1us(defDelayNus);
_SCK_0;
Data<<=1;
_Eeprom_1us(defDelayNus);
}
//get ack
_IIcAck;
}
static unsigned char _Eeprom_Read8Bit(void)
{
// ToDo:Add your code here
unsigned char bitnum,ret;
_SDA_IN;
for(bitnum=8;bitnum!=0;bitnum--)
{
_SCK_1;
ret<<=1;
_Eeprom_1us(defDelayNus);
if(_SDA!=0)
ret++;
_SCK_0;
_Eeprom_1us(defDelayNus);
}
return ret;
}
unsigned char fn_Eeprom_ReadB(unsigned char AddrDev,EEpromAddr Addr)
{
// ToDo:Add your code here
unsigned char ret;
_IIcStart;
_Eeprom_Send8Bit(0xA0+AddrDev);
if(bAckErr)return 0;
#if (Addr_ByteNum==2)
_Eeprom_Send8Bit(Addr>>8);//High Addr
if(bAckErr)return 0;
_Eeprom_Send8Bit((unsigned char)Addr);
#else
_Eeprom_Send8Bit(Addr);
#endif
if(bAckErr)return 0;
_IIcStart;
_Eeprom_Send8Bit(0xA1+AddrDev);
if(bAckErr)return 0;
ret=_Eeprom_Read8Bit();
_IIcStop;
return ret;
}
EEprom_bool fn_Eeprom_WriteB(unsigned char AddrDev,EEpromAddr Addr,unsigned char Data)
{
// ToDo:Add your code here
_IIcStart;
_Eeprom_Send8Bit(0xA0+AddrDev);
if(bAckErr)return 0;
#if (Addr_ByteNum==2)
_Eeprom_Send8Bit(Addr>>8);//High Addr
if(bAckErr)return 0;
_Eeprom_Send8Bit((unsigned char)Addr);
#else
_Eeprom_Send8Bit(Addr);
#endif
if(bAckErr)return 0;
_Eeprom_Send8Bit(Data);
_IIcStop;
if(bAckErr)return 0;
return 1;
}
EEprom_bool fn_Eeprom_Read(unsigned char *pbuf,unsigned char num,unsigned char AddrDev,EEpromAddr Addr)
{
// ToDo:Add your code here
_IIcStart;
_Eeprom_Send8Bit(0xA0+AddrDev);
if(bAckErr)return 0;
#if (Addr_ByteNum==2)
_Eeprom_Send8Bit(Addr>>8);//High Addr
if(bAckErr)return 0;
_Eeprom_Send8Bit((unsigned char)Addr);
#else
_Eeprom_Send8Bit(Addr);
#endif
if(bAckErr)return 0;
_IIcStart;
_Eeprom_Send8Bit(0xA1+AddrDev);
if(bAckErr)return 0;
for(num--;num!=0;num--)
{
*pbuf=_Eeprom_Read8Bit();
_IIcAck;if(bAckErr)return 0;
pbuf++;
}
*pbuf=_Eeprom_Read8Bit();
_IIcStop;
return 1;
}
EEprom_bool fn_Eeprom_Write(unsigned char *pbuf,unsigned char num,unsigned char AddrDev,EEpromAddr Addr)
{
// ToDo:Add your code here
_IIcStart;
_Eeprom_Send8Bit(0xA0+AddrDev);
if(bAckErr)return 0;
#if (Addr_ByteNum==2)
_Eeprom_Send8Bit(Addr>>8);//High Addr
if(bAckErr)return 0;
_Eeprom_Send8Bit((unsigned char)Addr);
#else
_Eeprom_Send8Bit(Addr);
#endif
if(bAckErr)return 0;
while(num!=0)
{
_Eeprom_Send8Bit(*pbuf);
pbuf++;
num--;
if(bAckErr)break;
}
_IIcStop;
if(bAckErr)return 0;
else return 1;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Eeprom.rar (2个子文件)
Eeprom.h 2KB
Eeprom.c 3KB
共 2 条
- 1
资源评论
- nickylee19842018-05-18可以参考参考
hehui211
- 粉丝: 33
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功