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

📄 wr24c02.c

📁 机械产品控制器
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>


#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1

sbit SDA=P2^0;
sbit SCL=P2^1;

void Start()
{
	SDA=1;
	SCL=1;
	SDA=0;
	SCL=0;
}


void Stop()
{
	SCL=0;
	SDA=0;
	SCL=1;
	SDA=1;
}

void Ack()
{
	SDA=0;
	SCL=1;
	SCL=0;
	SDA=1;
}

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

/***************************************************************************/
bit TestAck()
{
	bit ErrorBit;
	SDA=1;
	SCL=1;
	ErrorBit=SDA;
	SCL=0;
	return(ErrorBit);
}

/***************************************************************************/

void Write8Bit(unsigned char input)
{
	unsigned char temp;
	for(temp=8;temp!=0;temp--) {
	SDA=(bit)(input&0x80);
	SCL=1;
	_nop_();
	SCL=0;
	input=input<<1;
	}
}

/***************************************************************************/
void Write24c02(unsigned char idata *Wdata,unsigned char RomAddress,unsigned char number)
{
	Start();
	Write8Bit(WriteDeviceAddress);
        if(TestAck()) return;
	Write8Bit(RomAddress);
        if(TestAck()) return;
	for(;number!=0;number--) {
		Write8Bit(*Wdata);
	        if(TestAck()) return;
		Wdata++;
		}
	Stop();
}

/***************************************************************************/
unsigned char Read8Bit()
{
	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 Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes)
{
	Start();
	Write8Bit(WriteDeviceAddress);
        if(TestAck()) return;
	Write8Bit(RomAddress);
	if(TestAck()) return;
	Start();
	Write8Bit(ReadDviceAddress);
	if(TestAck()) return;
	while(bytes!=1) {
		*RamAddress=Read8Bit();
		Ack();
		RamAddress++;
		bytes--;
		}
	*RamAddress=Read8Bit();
	NoAck();
	Stop();
}

⌨️ 快捷键说明

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