头文件:
#ifndef _AT24C_EEPROM_Driver_H
#define _AT24C_EEPROM_Driver_H
#include <reg52.h>
#include <intrins.h>
#include "IIC_BUS_Driver.h"//Depended I2C Bus Driver
#define uchar unsigned char
#define ushort unsigned short
#define uint unsigned int
//#define AT24C_EEPROM_ADDRESS 0x00 /*定义IC地址*/
typedef struct _tag_iic_at24c_info_hdr
{
uchar ic_address;//器件地址
ushort size;//空间大小
ushort data_address;//当前指针位置
}IIC_AT24C_HEADER, *LPIIC_AT24C_HEADER;
enum AT24C_SEEK_TYPE
{
SEEK_BEGIN= 0,
SEEK_CUR= 1,
SEEK_END= 2,
};
bit AT24C_Init(LPIIC_AT24C_HEADER lpHdr, uchar ic_address, ushort size);
bit AT24C_Write(LPIIC_AT24C_HEADER lpHdr, uchar *buffer, uchar count);
bit AT24C_WriteByte(LPIIC_AT24C_HEADER lpHdr, uchar buf);
bit AT24C_Read(LPIIC_AT24C_HEADER lpHdr, uchar *buffer, uchar count);
uchar AT24C_ReadByte(LPIIC_AT24C_HEADER lpHdr);
bit AT24C_Seek(LPIIC_AT24C_HEADER lpHdr, short address, uchar seek_type);
#endif
源文件:
#include "AT24C_EEPROM_Driver.h"
#include "IIC_BUS_Driver.h"
bit AT24C_Init(LPIIC_AT24C_HEADER lpHdr, uchar ic_address, ushort size)
{
if (lpHdr == 0)
return 0;
lpHdr->ic_address = ic_address;
lpHdr->size = size;
lpHdr->data_address = 1;
return 1;
}
bit AT24C_Write(LPIIC_AT24C_HEADER lpHdr, uchar *buffer, uchar count)
{
if (lpHdr == 0)
return 0;
if (lpHdr->data_address + count >= lpHdr->size)
return 0;
if (ISendStr(lpHdr->ic_address, lpHdr->data_address, buffer, count) == 0)
return 0;
lpHdr->data_address += count;
return 1;
}
bit AT24C_WriteByte(LPIIC_AT24C_HEADER lpHdr, uchar buf)
{
if (lpHdr == 0)
return 0;
if (lpHdr->data_address + 1 >= lpHdr->size)
return 0;
if (ISendByte(lpHdr->ic_address, lpHdr->data_address, buf) == 0)
return 0;
lpHdr->data_address++;
return 1;
}
bit AT24C_Read(LPIIC_AT24C_HEADER lpHdr, uchar *buffer, uchar count)
{
if (lpHdr == 0)
return 0;
if (lpHdr->data_address + count >= lpHdr->size)
return 0;
if (IRecvStr(lpHdr->ic_address, lpHdr->data_address, buffer, count) == 0)
return 0;
lpHdr->data_address += count;
return 1;
}
uchar AT24C_ReadByte(LPIIC_AT24C_HEADER lpHdr)
{
uchar bk;
if (lpHdr == 0)
return 0;
if (lpHdr->data_address + 1 >= lpHdr->size)
return 0;
if (IRecvByte(lpHdr->ic_address, lpHdr->data_address, &bk) == 0)
return 0;
lpHdr->data_address++;
return bk;
}
bit AT24C_Seek(LPIIC_AT24C_HEADER lpHdr, short address, uchar seek_type)
{
if (lpHdr == 0)
return 0;
if (seek_type == SEEK_BEGIN)
{
if (address < 0)
lpHdr->data_address = 0x01;
else
{
lpHdr->data_address = address;
}
}
else if (seek_type == SEEK_END)
{
if (address < 0)
return 0;
else if (address >= lpHdr->size)
return 0;
lpHdr->data_address = lpHdr->size - address;
}
else if (seek_type == SEEK_CUR)
{
if (address < 0)
{
if ((-address) > lpHdr->data_address)
return 0;
}
else
{
if (lpHdr->data_address + address >= lpHdr->size)
return 0;
}
lpHdr->data_address += address;
}
return 1;
}
分享到:
相关推荐
191-存储AT24C02(51单片机C语言实例Proteus仿真和代码)191-存储AT24C02(51单片机C语言实例Proteus仿真和代码)191-存储AT24C02(51单片机C语言实例Proteus仿真和代码)191-存储AT24C02(51单片机C语言实例Proteus仿真和...
里面有24C64的驱动程序,还有24C02的驱动程序(注释起来了)
基于Keil+51单片机将渴望乐谱写入AT24C02并读出播放.rar(源码+仿真)基于Keil+51单片机将渴望乐谱写入AT24C02并读出播放.rar(源码+仿真)基于Keil+51单片机将渴望乐谱写入AT24C02并读出播放.rar(源码+仿真)基于...
基于STM32103 AT24C64~256驱动程序
这是基于STM32设计的AT24C02与AT24C08_EEPROM存储芯片驱动代码,包含了IIC模拟时序、IIC硬件时序两种方式驱动。 包含了AT24C02、AT24C08两款芯片的代码。
在LCD1602液晶屏上显示一个无符号整型数字,按下K1按键数字减一,按下K2数字加一,按下K3数字向AT24C02写入该数据,断电重启后按下K4可以从AT24C02中读取该数据。
AT24C02原版翻译,详细无错误!
AT24C02中文资料,分享给大家,感谢下载,感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感
蓝桥杯单片机AT24C02程序,用蓝桥杯官方给的驱动,IIC协议读取EEPROM里面存取的数据,可以读可以写,非常的银杏,非常的好用!
基于Keil+51单片机对I2C总线上挂接多个AT24C02的读写操作.rar(源码+仿真)基于Keil+51单片机对I2C总线上挂接多个AT24C02的读写操作.rar(源码+仿真)基于Keil+51单片机对I2C总线上挂接多个AT24C02的读写操作.rar...
51单片机STC89C52RC开发板例程之AT24C02(EEPROM)记忆大于255的数程序源代码。 1、单片机型号:STC89C52RC。 2、开发环境:KEIL。 3、编程语言:C语言。 4、提供配套PDF格式51单片机STC89C52RC开发板电路原理图。 5...
本文给大家分享了一个51单片机IO口模拟驱动AT24c02源代码。
基于Keil+51单片机+AT24C02的多机通信.rar(源码+仿真)基于Keil+51单片机+AT24C02的多机通信.rar(源码+仿真)基于Keil+51单片机+AT24C02的多机通信.rar(源码+仿真)基于Keil+51单片机+AT24C02的多机通信.rar...
PCF8563,AT24C02驱动程序,开发环境KEIL C uvision.采用at89s51单片机 8位数码管LED显示。12MHz晶振。
linux下的AT24C02驱动,采用了palrform形式,基于这个版本bus devcie driver
AT24C04存储器的模拟IIC驱动,并在工程中应用。
11.AT24C02_51单片机程序源码_单片机作业_课程设计.zip
最新单片机仿真 基于AT24C02的多机通信最新单片机仿真 基于AT24C02的多机通信最新单片机仿真 基于AT24C02的多机通信最新单片机仿真 基于AT24C02的多机通信最新单片机仿真 基于AT24C02的多机通信最新单片机仿真 基于...
基于C8051F060单片机的AT24C1024芯片应用.pdf
单片机24c02的.c和.h驱动文件