//-----------------------------------------------------------------
// 名称: 24C04 IIC读写程序
//-----------------------------------------------------------------
#define INT8U unsigned char
#define INT16U unsigned int
#include <reg51.h>
#include <intrins.h>
sbit SCL = P3^2;//串行时钟
sbit SDA = P3^3;//串行数据
#include "I2C.h"//IIC总线通用宏及函数
//-----------------------------------------------------------------
// 向指定的地址写数据
// 器件选择码字节格式 (其中E2,E1为片选位,A8为块地址位)
// 位: B7 B6 B5 B4 B3 B2 B1 B0
// 值: 1 0 1 0 E2 E1 A8 RW
//-----------------------------------------------------------------
void Write_IIC(INT8U Dev_Addr,INT16U mem_addr,INT8U dat)
{
IIC_Start();
if(mem_addr<0x0100) IIC_WriteByte(Dev_Addr);
elseIIC_WriteByte(Dev_Addr|0x02);
IIC_WriteByte(mem_addr);
IIC_WriteByte(dat);
IIC_Stop();
}
//-----------------------------------------------------------------
// 从任意地址读取数据(器件选择码字节参上一函数说明)
//-----------------------------------------------------------------
INT8U Random_Read(INT8U Dev_Addr,INT16U mem_addr)
{
INT8U d;
IIC_Start();
if(mem_addr<0x0100)IIC_WriteByte(Dev_Addr);
elseIIC_WriteByte(Dev_Addr|0x02);
IIC_WriteByte(mem_addr);
IIC_Start();
if(mem_addr<0x0100)IIC_WriteByte(Dev_Addr|0x01);
elseIIC_WriteByte(Dev_Addr|0x03);
d=IIC_ReadByte(); IIC_NAck(); IIC_Stop();
return d;
}
// 名称: 24C04 IIC读写程序
//-----------------------------------------------------------------
#define INT8U unsigned char
#define INT16U unsigned int
#include <reg51.h>
#include <intrins.h>
sbit SCL = P3^2;//串行时钟
sbit SDA = P3^3;//串行数据
#include "I2C.h"//IIC总线通用宏及函数
//-----------------------------------------------------------------
// 向指定的地址写数据
// 器件选择码字节格式 (其中E2,E1为片选位,A8为块地址位)
// 位: B7 B6 B5 B4 B3 B2 B1 B0
// 值: 1 0 1 0 E2 E1 A8 RW
//-----------------------------------------------------------------
void Write_IIC(INT8U Dev_Addr,INT16U mem_addr,INT8U dat)
{
IIC_Start();
if(mem_addr<0x0100) IIC_WriteByte(Dev_Addr);
elseIIC_WriteByte(Dev_Addr|0x02);
IIC_WriteByte(mem_addr);
IIC_WriteByte(dat);
IIC_Stop();
}
//-----------------------------------------------------------------
// 从任意地址读取数据(器件选择码字节参上一函数说明)
//-----------------------------------------------------------------
INT8U Random_Read(INT8U Dev_Addr,INT16U mem_addr)
{
INT8U d;
IIC_Start();
if(mem_addr<0x0100)IIC_WriteByte(Dev_Addr);
elseIIC_WriteByte(Dev_Addr|0x02);
IIC_WriteByte(mem_addr);
IIC_Start();
if(mem_addr<0x0100)IIC_WriteByte(Dev_Addr|0x01);
elseIIC_WriteByte(Dev_Addr|0x03);
d=IIC_ReadByte(); IIC_NAck(); IIC_Stop();
return d;
}