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

📄 24lc256.h

📁 This code is for transmission and reception on 8880,lcd and 24cxx chip using 8051.
💻 H
字号:
				//---------------------------------------
// 24LC256 I2C EEPROM driver
// KEIL C51 v7.5
// www.GetMicro.com
//---------------------------------------
    char edata;
	 



#define ACK		1
#define NO_ACK	0
#ifndef _24LC256_H
#define _24LC256_H
 
extern void          _nop_     (void);
extern bit           _testbit_ (bit);
extern unsigned char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);

extern unsigned char ReadBYTE(unsigned int Addr);
extern void WriteBYTE(unsigned int Addr,unsigned char Data);
extern void delay();

unsigned char i;


//sbit SDA  =  P2^7;//P2^3;	// connect to SDA pin (Data)
//sbit SCL  =  P2^6;//P2^2;	// connect to SCL pin (Clock)

  sbit SDA  =  P3^2;
  sbit SCL  =  P3^1;
//-------------------------------
// start I2C
//-------------------------------

 void dly(unsigned int j){
unsigned int i=0;
for(;i<j;i++);
}





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

//-------------------------------
// stop I2C
//-------------------------------
void Stop(void)
{
	SDA = 0;	    	
	_nop_();_nop_();
	SCL = 1;
	_nop_();_nop_();
	SDA = 1;	
}

//-------------------------------
// Write I2C
//-------------------------------
void WriteI2C(unsigned char Data)
{    

	for (i=0;i<8;i++)
	{
        SDA = (Data & 0x80) ? 1:0;
		SCL=1;SCL=0;
		Data<<=1;
	}

  	SCL = 1; 
	_nop_();_nop_();
	SCL = 0;

}

//-------------------------------
// Read I2C
//-------------------------------
unsigned char ReadI2C(bit ACK_Bit)
{
    
    unsigned char Data=0;

    SDA = 1;	
	for (i=0;i<8;i++)
	{
		SCL   = 1;		
		Data<<= 1;
		Data  = (Data | SDA);		
		SCL   = 0;
		_nop_();
	}
    
 	if (ACK_Bit == 1)
	SDA = 0; // Send ACK		
	else		
	SDA = 1; // Send NO ACK				

	_nop_();_nop_();
	SCL = 1;		
	_nop_();_nop_();
	SCL = 0;
	
	return Data;
}

//-------------------------------
// Read 1 byte form I2C
//-------------------------------
unsigned char ReadBYTE(unsigned int Addr)
{
   	unsigned char Data;
	Start();
	WriteI2C(0xA0);
	WriteI2C(Addr);
	Start();
	WriteI2C(0xA1);
	Data = ReadI2C(NO_ACK);
	Stop();
   	return(Data);
}

//-------------------------------
// Write 1 byte to I2C
//-------------------------------
void WriteBYTE(unsigned int Addr,unsigned char Data)
{
	Start();
	WriteI2C(0xA0);
	WriteI2C(Addr);		// send address low	
	WriteI2C(Data); 
	Stop();	
}




											   





⌨️ 快捷键说明

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