没有合适的资源?快使用搜索试试~ 我知道了~
AT24C02的驱动程序(与51接口)
4星 · 超过85%的资源 需积分: 9 27 下载量 73 浏览量
2009-07-16
17:24:03
上传
评论
收藏 13KB TXT 举报
温馨提示
试读
12页
AT24C02读写C程序文件名称:AT24Cxxx.C 适用范围:EEPROM芯片AT24Cxx的驱动程序
资源推荐
资源详情
资源评论
AT24C02读写C程序
*==============================================================================
文件名称:AT24Cxxx.C
适用范围:EEPROM芯片AT24Cxx的驱动程序
The header files name is AT24Cxx.H
include AT24C01/01A/02/04/08/16/32/64/128/256/512
*the header files program's function is link exterior extend E2PROM
*the link chip's name is AT24C01A-512
* Debug frequency:22.1184MHz
* Author by: YanDeBao
* Modified : 03-09-2007
* Version : V1.0
==============================================================================*/
#include "ZYEL0301.H" //包含硬件配置文件
#include "AT24Cxxx.H"
/* 嵌入宏定义 */
#define OSC_freq 24 //MHz,系统时钟振荡频率
#define IIC_freq 400 //kHz,IIC总线最大通讯速率
#if OSC_freq == 12
#define Wait_1us {_nop_();}; //在OSC为11.0592或12MHz时
#elif OSC_freq == 24
#define Wait_1us {_nop_();_nop_();}; //在OSC为20,22.1184或24MHz时
#elif OSC_freq == 40
#define Wait_1us {_nop_();_nop_();_nop_();_nop_();} //在OSC为40MHz时
#endif
#if IIC_freq == 100 //3V系统最高100kHz
#define IIC_Wait {Wait_1us;Wait_1us;Wait_1us;Wait_1us;};
#elif IIC_freq == 400 //5V系统最高400kHz
#define IIC_Wait {Wait_1us;};
#endif
*==============================================================================
文件名称:AT24Cxxx.C
适用范围:EEPROM芯片AT24Cxx的驱动程序
The header files name is AT24Cxx.H
include AT24C01/01A/02/04/08/16/32/64/128/256/512
*the header files program's function is link exterior extend E2PROM
*the link chip's name is AT24C01A-512
* Debug frequency:22.1184MHz
* Author by: YanDeBao
* Modified : 03-09-2007
* Version : V1.0
==============================================================================*/
#include "ZYEL0301.H" //包含硬件配置文件
#include "AT24Cxxx.H"
/* 嵌入宏定义 */
#define OSC_freq 24 //MHz,系统时钟振荡频率
#define IIC_freq 400 //kHz,IIC总线最大通讯速率
#if OSC_freq == 12
#define Wait_1us {_nop_();}; //在OSC为11.0592或12MHz时
#elif OSC_freq == 24
#define Wait_1us {_nop_();_nop_();}; //在OSC为20,22.1184或24MHz时
#elif OSC_freq == 40
#define Wait_1us {_nop_();_nop_();_nop_();_nop_();} //在OSC为40MHz时
#endif
#if IIC_freq == 100 //3V系统最高100kHz
#define IIC_Wait {Wait_1us;Wait_1us;Wait_1us;Wait_1us;};
#elif IIC_freq == 400 //5V系统最高400kHz
#define IIC_Wait {Wait_1us;};
#endif
#define AT24C01 0x01
#define AT24C01A 0x02
#define AT24C02 0x03
#define AT24C04 0x04
#define AT24C08 0x05
#define AT24C16 0x06
#define AT24C32 0x07
#define AT24C64 0x08
#define AT24C128 0x09
#define AT24C256 0x0a
#define AT24C512 0x0b
#define cmd_WR 0xa0 /*0000 0000*/
#define cmd_RD 0xa1 /*0000 0001*/
#define Mem_Type AT24C02 /*01/01A/02/04/08/16/32/64/128/256/512*/
#define Dev_Addr 0x00 /*目的器件的器件地址,可以设置8个不同地
址的芯片使之能用同一段程序进行读写 */
/* 串行引脚定义 ,具体请参照相应的硬件资源配置文件Target.H */
/* 变量声明 */
bit bScan_Err;
unsigned char idata cIIC_Buf[9]; /*I2c read and write buffer*/
/* 函数声明 */
void IIC_Start(void);
void IIC_End(void);
unsigned char IIC_Scan();
void IIC_Send(unsigned char cData);
void IIC_Send_Ack(void);
void IIC_Send_NotAck(void);
void Mem_Write(unsigned char cMem_Type,cDev_Addr,cData_Size,unsigned int cStart_Addr);
void Mem_Read(unsigned char cMem_Type,cDev_Addr,cData_Size,unsigned int cStart_Addr);
/**********************************************************
#define AT24C01A 0x02
#define AT24C02 0x03
#define AT24C04 0x04
#define AT24C08 0x05
#define AT24C16 0x06
#define AT24C32 0x07
#define AT24C64 0x08
#define AT24C128 0x09
#define AT24C256 0x0a
#define AT24C512 0x0b
#define cmd_WR 0xa0 /*0000 0000*/
#define cmd_RD 0xa1 /*0000 0001*/
#define Mem_Type AT24C02 /*01/01A/02/04/08/16/32/64/128/256/512*/
#define Dev_Addr 0x00 /*目的器件的器件地址,可以设置8个不同地
址的芯片使之能用同一段程序进行读写 */
/* 串行引脚定义 ,具体请参照相应的硬件资源配置文件Target.H */
/* 变量声明 */
bit bScan_Err;
unsigned char idata cIIC_Buf[9]; /*I2c read and write buffer*/
/* 函数声明 */
void IIC_Start(void);
void IIC_End(void);
unsigned char IIC_Scan();
void IIC_Send(unsigned char cData);
void IIC_Send_Ack(void);
void IIC_Send_NotAck(void);
void Mem_Write(unsigned char cMem_Type,cDev_Addr,cData_Size,unsigned int cStart_Addr);
void Mem_Read(unsigned char cMem_Type,cDev_Addr,cData_Size,unsigned int cStart_Addr);
/**********************************************************
剩余11页未读,继续阅读
资源评论
- slfs0072014-05-10也许是硬件电路的问题吧,程序没跑起来
- n187306532102014-12-13挺有用的非常好
dxz061yxb
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功