⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom_2402.c

📁 大规模魂牵梦萦超大规模东走西顾芏大规模霜期横截要魂牵梦萦霜期工顶戴林
💻 C
字号:
#include <at89x52.h>
sbit  SCL=P2^6;
sbit  SDA=P2^7;
#define	WriteDeviceAddress 0xa0  //写驱动的硬件地址  引脚A0,A1,A2全接地
#define	ReadDviceAddress 0xa1	 //读驱动的硬件地址  引脚A0,A1,A2全接地

/*************************************************/
void Delay5ms(void)
{
register int i;
for(i=0;i<1000;i++);
    
}

/*******************起始信号***********************/
void Start(void) 
{
	SDA=1;
	SCL=1;
	SDA=0;
	SCL=0;
}
/********************停止信号*************************/
void Stop(void)
{
	SCL=0;
	SDA=0;
	SCL=1;
	SDA=1;
}
/*******************应答信号*************************/
void Ack(void) 
{
	SDA=0;
	SCL=1;
	SCL=0;
	SDA=1;
}

/******************无应答***************************/
void NoAck(void) 
{
	SDA=1;
	SCL=1;
	SCL=0;
}

/***************测试应答信号***********************/
bit TestAck(void) 
{
	bit ErrorBit;
	SDA=1;
	SCL=1;
	ErrorBit=SDA;
	SCL=0;
	return(ErrorBit);
}

/******************写8位数据**************************/
void Write8Bit(unsigned char input) 
{
	unsigned char temp;
	for(temp=8;temp!=0;temp--) 
	{
		SDA=(bit)(input&0x80);
		SCL=1;
		SCL=0;
		input=input<<1;
	}
}
 /**************////////****************************/
void Write24c04(unsigned char RomAddress,unsigned char *Wdata,unsigned char number) {
	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(RomAddress);
	TestAck();
	for(;number!=0;number--) {
		Write8Bit(*Wdata);
		TestAck();
		Wdata++;
	}
	Stop();
	Delay5ms();
	Delay5ms();
}

/**********************读8位操作******************/
unsigned char Read8Bit(void) 
{
	unsigned char temp,rbyte=0;
	for(temp=8;temp!=0;temp--) {
		SCL=1;
		rbyte=rbyte<<1;
		rbyte=rbyte|((unsigned char)(SDA));
		SCL=0;
	}
	return(rbyte);
}

/***************************************************/
void Read24c04(unsigned char RomAddress,unsigned char *RamAddress,unsigned char bytes) 
{
	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(RomAddress);
	TestAck();
	Start();
	Write8Bit(ReadDviceAddress);
	TestAck();
	while(bytes!=1) 
	{
		*RamAddress=Read8Bit();
		Ack();
		RamAddress++;
		bytes--;
	}
	*RamAddress=Read8Bit();
	NoAck();
	Stop();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -