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

📄 cat02.c

📁 存储器CAT240X C语言程序
💻 C
字号:
#include <reg52.h>                    /* special function registers 8052      */

#define HIGH 1
#define LOW 0
#define FALSE 0
#define TRUE ~FALSE
#define WRITE 0xA0
#define READ 0xA1

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

extern void delay(unsigned int);            /*延时子程序*/

/*提供I2C总线工作时序中的起始位*/
void  I_start(void)
{
	SCL=HIGH;
	delay(1);
	SDA=LOW;
	delay(1);
	SCL=LOW;
	delay(1);
}

/*提供I2C总线工作时序中的停止位*/
void I_stop(void)
{
	SDA=LOW;
	delay(2);
	SCL=HIGH;
	delay(2);
	SDA=HIGH;
	delay(2);
	SCL=LOW;
	delay(2);
}

/*总线初始化*/

void CAT_init(void)
{
	SCL=LOW;
	I_stop();
}


/*提供总线时钟信号,可发送数据,也可接受数据*/
bit I_clock(void)
{
	bit sample;
	SCL=HIGH;
	delay(1);
	sample=SDA;
	SCL=LOW;
	delay(1);
	return(sample);
}

/*发送8位数据,请求应答信号,如果受到则返回1,否则返回0*/
bit I_send(unsigned char I_data)
{
	unsigned char i;
	for (i=0;i<8;i++)
		{
		SDA=(bit)(I_data & 0x80);
		I_data=I_data<<1;
		I_clock();
		}
	SDA=HIGH;
	return(~I_clock());
}

/*接受8位数据*/
unsigned char I_receive(void)
{
	unsigned char I_data=0;
        unsigned char i;
	for (i=0;i<8;i++)
		{
		I_data*=2;
		if(I_clock())
			I_data++;
		}
	 return(I_data);
}


/*发送应答信号*/
/*
void I_Ack(void)
{
	SDA=LOW;
	I_clock();
	SDA=HIGH;
}

*/

/*发送地址*/
bit E_adrs(unsigned char Address)
{
	I_start();
	if(I_send(WRITE))
		return(I_send(Address));
	else
		return(FALSE);
}

/*读CAT24WC01,成功返回所读的值,不成功返回0*/
unsigned char CAT_read(unsigned char read_add)
{
	unsigned char retval;
        CAT_init();
	if (E_adrs(read_add))
		{
		I_start();
		if (I_send(READ))
			{
			retval=(I_receive());
			I_clock();
			I_stop();
			return(retval);
			}
		else
			{
			I_stop();
			return(0);
			}
		}
	else
		{
		I_stop();
		return(0);
		}
}

/*写CAT24WC01,成功返回1,不成功返回0*/
unsigned char CAT_write(unsigned char data_wrt,unsigned char add_wrt)
{
	CAT_init();
	if(E_adrs(add_wrt) && I_send(data_wrt))
		{
			I_stop();
			delay(5);
			return(1);
		}
	else
		return(0);

}


⌨️ 快捷键说明

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