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

📄 stc_control_24c02.c

📁 单片机通过I2C总线控制24c02 其中包括 24C02初始化 24C02读写等 STC单片机初始化 读写等
💻 C
字号:
/*************************版权信息**************************  
  *文件名称:     i2c.h  
  *当前版本:     v1.0  
  *作者:         吕坤修改  
  *完成日期:     2007-12-29  
  *摘要:         24c02外存操作声明文件  
  ************************************************************/ 

#include <reg52.h>
extern void Delay(long int time);

sbit scl=P2^3;  /*24c02时钟控制线*/
sbit sda=P2^4;  /*24c02数据传输线*/

char x24c02_read(char address);			  /*从24c02的address地址读取一个数据并返回*/
void x24c02_write(char address,char info);/*向24c02的address地址写入字符info*/
void x24c02_init();						  /*24c02初始化*/

void flash();							/*数据写入时控制发光二极管闪烁*/
void start();							/*I2C总线协议,数据开始*/
void stop();							/*I2C总线协议,数据结束*/
void writex(char j);		   			/*向I2C总线写入一个数据*/	
char readx();					 		/*从I2C总线读出一个数据*/
void clock();					   		/*等待周期*/	

/*调用写入与读出程序库*/
void write_uint_to_24c02(char address,unsigned int date);		/*向address写入一个无符号整形*/
void write_int_to_24c02(char address,int date);					/*向address写入一个整形*/
void write_string_to_24c02(char address,char *date,char lens);	/*向address写入一个字符串*/

unsigned int read_uint_form_24c02(char address);				/*从address读出一个无符号整形*/
int read_int_form_24c02(char address);							/*从address读出一个无符号整形*/
void read_string_form_24c02(char address,char *date,char lens);	/*从address读出一个无符号整形*/

void flash()
{
	/*等待闪烁
	DOG=~DOG;
	*/
}
/*24c02初始化程序*/
void x24c02_init()
{
	scl=1;
   	flash();
	sda=1;
	flash();
}

void start()
{
	sda=1; 
	flash(); 
	scl=1; 
	flash(); 
	sda=0; 
	flash(); 
	scl=0; 
	flash();
}

void stop()
{
	sda=0; 
	flash(); 
	scl=1; 
	flash(); 
	sda=1; 
	flash();
}

void writex(char j)
{
	char i,temp;
	temp=j;
	for (i=0;i<8;i++)/*分拆字节传输*/
	{
		temp=temp<<1; 
		scl=0; 
		flash(); 
		sda=CY; 
		flash(); 
		scl=1; 
		flash();
	}
	scl=0; 
	flash(); 
	sda=1; 
	flash();
}
char readx()
{
	char i,j,k=0;
	scl=0; 
	flash(); 
	sda=1;
	for(i=0;i<8;i++)
	{
		flash(); 
		scl=1; 
		flash();
      	if (sda==1)
		{
			j=1;
		}
      	else
		{
			j=0;
		}
      	k=(k<<1)|j; 
		scl=0;
	}
	flash(); 
	return(k);
}
void clock()
{
	 char i=0;
	scl=1; 
	flash();
	while((sda==1)&&(i<255))
	{
		i++;
	}
	scl=0;
	flash();
}

char x24c02_read(char address)
{
	char i;
	start(); 
	writex(0xa0);
   	clock(); 
	writex(address);
   	clock(); 
	start();
   	writex(0xa1); 
	clock();
   	i=readx(); 
	stop();
   	Delay(10);
   	return(i);
}
void x24c02_write(char address,char info)
{
	EA=0;
	start(); 
	writex(0xa0);
   	clock(); 
	writex(address);
   	clock(); 
	writex(info);
   	clock(); 
	stop();
   	EA=1;
   	Delay(50);
}

void write_uint_to_24c02(char address,unsigned int date)		/*向address写入一个无符号整形*/
{
	char byte_to_24c02;
	byte_to_24c02=date;
	x24c02_write(address,byte_to_24c02);
	Delay(30);
	byte_to_24c02=date>>8;
	x24c02_write(address+1,byte_to_24c02);	
}

void write_int_to_24c02(char address,int date)					/*向address写入一个整形*/
{
	char byte_to_24c02;
	byte_to_24c02=date;
	x24c02_write(address,byte_to_24c02);
	Delay(30);
	byte_to_24c02=date>>8;
	x24c02_write(address+1,byte_to_24c02);
}
void write_string_to_24c02(char address,char *date,char lens)	/*向address写入一个字符串*/
{
	char i,byte_to_24c02;
	for(i=0;i<lens;i++)
	{
		byte_to_24c02=*date;
		x24c02_write(address+i,byte_to_24c02);
		date++;	
	}	
}

unsigned int read_uint_form_24c02(char address)					/*从address读出一个无符号整形*/
{
	unsigned int return_value;
	char byte_from_24c02;
	byte_from_24c02=x24c02_read(address+1);
	return_value=byte_from_24c02;
	byte_from_24c02=x24c02_read(address);
	return_value<<=8;
	return_value+=byte_from_24c02;
	return return_value;
}
int read_int_form_24c02(char address)							/*从address读出一个无符号整形*/
{
	int return_value;
	char byte_from_24c02;
	byte_from_24c02=x24c02_read(address+1);
	return_value=byte_from_24c02;
	byte_from_24c02=x24c02_read(address);
	return_value<<=8;
	return_value+=byte_from_24c02;
	return return_value;	
}
void read_string_form_24c02(char address,char *date,char lens)	/*从address读出一个无符号整形*/
{
	char i;
	for(i=0;i<lens;i++)
	{
		*date=x24c02_read(address+i);
		date++;	
	}
}

⌨️ 快捷键说明

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