资源简介
本代码是一个完整的24c02,24c04,24cxx系列的读写,除了修改单片机的型号外,不需要做任何改动便可直接使用,有详细的中文注释,方便理解
代码片段和文件信息
/***********************************************************/
/** 模块功能:24cxx读写
/** 说 明:24c02 256x8 (2K bits)
/** 24c04 512x8 (4K bits)
/** 24c08 1024x8 (8K bits)
/** 24c16 2048x8 (16K bits)
/***********************************************************/
#include
#include
/*************** 宏定义*************************************/
#define uint unsigned int
#define uchar unsigned char
#define AddWr 0xa0 //器件写地址
#define AddRd 0xa1 //器件读地址
#define Num24C02 8 //24cxx 每一页的字节数
#define Num24C04 16
#define Num24C08 16
#define Num24C16 16
#define NumByte Num24C04 //24cxx 每一页的字节数
/*************** 端口定义***********************************/
sbit Sda=P1^3; //定义数据总线
sbit Scl=P1^4; //定义时钟总线
sbit led0=P1^6; //定义指示灯
sbit led1=P1^5;
sbit led2=P3^7;
/*************** 全局变量定义*******************************/
uint xdata len1; //起始地址到本页末能写的字节数
uint xdata len2; //中间能够完整写入的页数
uint xdata len3; //最后页写入的字节数
uchar xdata PageBig; //256个Byte为1个大页24c02:PageBig=0;24c04:PageBig=0~1;24c08:PageBig=0~3;
uchar xdata Number1[256];
uchar xdata Number2[300];
uchar xdata Number3[256];
/***************************************************************/
/** 函数:uDelay(uint us)
/** 功能:延时 100us
/***************************************************************/
void uDelay(uint us)
{
uint xdata i;
while(us--)
for(i=0;i<53;i++);
}
/***************************************************************/
/** 函数:delay_IIC()
/** 功能:延时 1us
/***************************************************************/
void delay_IIC()
{
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
/***************************************************************/
/** 函数:Start(void)
/** 功能:IIC总线启动
/** 说明:Sda由高跳低,且期间Sck保持为高电平
/***************************************************************/
void Start(void)
{
Sda=1;
Scl=1;
delay_IIC();
Sda=0;
delay_IIC();
}
/***************************************************************/
/** 函数:Stop(void)
/** 功能:IIC总线停止
/** 说明:Sda由低跳高,且期间Sck保持为高电平
/***************************************************************/
void Stop(void)
{
Sda=0;
Scl=1;
delay_IIC();
Sda=1;
delay_IIC();
}
/***************************************************************/
/** 函数:Ack(void)
/** 功能:应答IIC总线
/** 说明:Sda拉低表示应答,且在应答脉冲期间,保持稳定低电平
/***************************************************************/
void Ack(void)
{
Sda=0;
delay_IIC();
Scl=1;
delay_IIC();
Scl=0;
delay_IIC();
}
/***************************************************************/
/** 函数:NoAck(void)
/** 功能:非应答IIC总线
/** 说明:Sda不拉低表示非应答,且在应答脉冲期间,保持稳定低电平
/****************************************
- 上一篇:大学生创业计划书
- 下一篇:SIFT算法实现及代码详解
相关资源
- 分时操作系统在单片机中的实现
- MSP430单片机通过proteus仿真DS18B20程序
- 基于单片机和红外接近开关的图书馆
- 51 单片机 汇编 花样流水灯 经典连续
- 51单片机 RTL8019AS 网卡驱动程序(有
- MSP430g2553单片机实现的输出三路PWM,
- 单片机原理及接口技术 期末考试题
- FM24C04驱动程序并带有测试程序
- 基于单片机的十字路口红绿灯控制系
- 基于单片机的便携式电子称的设计
- TLC5615+可调频率正弦波.zip
- TLC5615C+输出三角波+仿真.zip
- 基于单片机的酒精浓度测试仪的程序
- 源程序 - 副本.rar
- 基于单片机的交通灯控制系统设计程
- 单片机proteus8255A芯片扩展
- 图片提取软件内有教程
- 胡乾斌版单片机课后习题答案
- 基于51单片机的电子表
- 基于51单片机实现简单五子棋
- 干电池剩余电量百分比算法函数
- 数字温度计用51单片机程序
- 51单片机利用8266wifi获取网络时间,亲
- 51单片机频率计程序
- Protues 8.6安装包+安装教程
- 基于51单片机和热敏电阻数字温度计
- 单片机课程设计报告书
- 单片机数码管显示温度
- 基于51单片机的只能台灯
- max31856驱动程序官方文件
评论
共有 条评论