at24c16_driver.c

来自「该压缩包内还有51单片机常用各类外设驱动C程序源码(128*64点阵屏」· C语言 代码 · 共 84 行

C
84
字号
#include "AT89S52.h"
#include "CONFIG.H"
#include "IIC_Driver.h"

/*-------------------------------------------------------
				向I2C总线写n个字节
				Device_Adr:块地址(0~7)
				Word_Adr:内存地址(0~255)
				*buffer:待发数组指针
				n:发送字节数(1~16)
-------------------------------------------------------*/
void Write_N_Bytes(uchar Device_Adr,uchar Word_Adr,uchar *buffer,uchar n)
{ 
uchar data i; 
Device_Adr=Device_Adr<<1;
IIC_Start() ; 
IIC_Write_Byte(Device_Adr|0xA0);
if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 
IIC_Write_Byte(Word_Adr);
if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 

for(i=0 ;i<n ;i++) 
{ 
	IIC_Write_Byte(*buffer++) ; 
	if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 
} 

IIC_Stop() ; 

} 

/*-------------------------------------------------------
				从I2C总线读n个字节
				Device_Adr:块地址(0~7)
				Word_Adr:内存地址(0~255)
				*buffer:待收数组指针
				n:接收字节数(1~16)
-------------------------------------------------------*/
void Read_N_Bytes(uchar Device_Adr,uchar Word_Adr,uchar *buffer,uchar n) 
{ 
uchar data i ; 
Device_Adr=Device_Adr<<1;
IIC_Start() ; 
IIC_Write_Byte(Device_Adr|0xA0) ; 
if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 
IIC_Write_Byte(Word_Adr);
if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 
IIC_Start();
IIC_Write_Byte(Device_Adr|0xA1) ;  
if(IIC_Check_Acknowledge()) 
	{ 
		IIC_Stop() ; 
		return ;
	} 

for(i=0 ;i<n ;i++) 
{ 
*buffer++=IIC_Read_Byte() ; 
IIC_Acknowledge();
} 
IIC_Stop() ; 
} 

⌨️ 快捷键说明

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