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

📄 eprom.h

📁 This Program Cotains Eeprom Read-write functions, 4 Bit LCD interface routines, Keyboard Interface w
💻 H
字号:
/********************************************************************************************************

Following function is used to

********************************************************************************************************/
sbit scl=P1^1;
sbit sda=P1^2;
sbit WP=P1^0;
#define true 1
#define false 0
void masterack(void)
{
	scl=0;
	ee_delay();
	sda=0;
	ee_delay();
	scl=1;
	ee_delay();
	scl=0;
}

void ee_delay(void)
{
	byte delay11;
		for(delay11=0;delay11<2;delay11++);

}

void ee_start(void)
{
		// make scl and sda outputs
	sda=0;
	ee_delay();
	scl=1;
	ee_delay();
	sda=1;
	ee_delay();			// stop condition
	sda=0;
	ee_delay();			// start condition
}

bit ack(void)
{
	scl=0;		// acknowledge
	ee_delay();
				// sda input
	ee_delay();
	scl=1;
	ee_delay();	//  test acknowledge
	return(sda);
}

void ee_data(byte *x)
{
	int ij;
		//sda input
	sda=1;
	*x=0;

	ij=0x80;
	do
	{
		scl=0;
		ee_delay();
		scl=1;
		ee_delay();
		if (sda)  
			*x=(*x)|ij;
		ij>>=1;
	}while(ij!=0);

}


void ee_byte(byte x)
{
	int ii;
		//sda input
	ii=0x80;
	do
	{
		scl=0;
		sda=0;		// sda output
		ee_delay();
		if (x&ii)
			sda=1;
		else
			sda=0;
		ee_delay();
		scl=1;
		ee_delay();
		ii>>=1;
	}while(ii!=0);

}

bit ee_byte_to_ee (byte address, byte msbyte)
{
// Returns true if write was succesfully acknowledge

	ee_start();
	ee_byte(0xa0);
	if(ack() ) return(false);
	ee_byte(address);
	if(ack() ) return(false);
	ee_byte(msbyte);
	if(ack() ) return(false);

	scl=0;
	ee_delay();
	sda=0;
	ee_delay();
	scl=1;
	ee_delay();
	sda=1;
	ee_delay();
	return(true);
}

bit ee_byte_from_ee (byte address, byte *msbyte)
{
// Returns true if read was succesfully acknowledge
	ee_start();
	ee_byte(0xa0);
	if(ack() ) return(false);
	ee_byte(address);
	if(ack() ) return(false);
	scl=0;
	ee_delay();
	scl=1;
	ee_delay();
	sda=0;
	ee_delay();
	ee_byte(0xa1);
	if(ack() ) return(false);
	ee_data(msbyte);
	masterack();
	ack();
	scl=0;
	ee_delay();
	sda=0;
	ee_delay();
	scl=1;
	ee_delay();
	sda=1;
	ee_delay();
	return(true);
}


⌨️ 快捷键说明

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