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

📄 eeprom.c

📁 93C系列EEPROM内存蕊片标准读写模块
💻 C
字号:
/**51 EEPROM 驱动,占用P3.4,P3.5,P3.6,脚 
93c56的ORG-6脚已经接地,所以93C56工作在9位地址,8位数据模式**/
#include "config.h"   
sbit cs_93 = P3^6;//CS
sbit sk_93 = P3^5;//CLK
sbit di_93 = P3^4;//DI/DO
sbit do_93 = P3^4;//DI/DO

/*高电平时序函数*/
void high56(void)
{ 
	di_93=1; 
	sk_93=1; _nop_(); 
	sk_93=0;_nop_();
}
/*低电平时序函数*/
void low56(void)
{ 
	di_93=0; 
	sk_93=1;_nop_();
	sk_93=0;_nop_();
}
/*写电平时序函数*/
void wd56(uint8 dd)
{ 
	uint8 i; 
	for (i=0;i<8;i++) 
	{ 
		if (dd>=0x80) high56(); 
		else low56(); 
		dd=dd<<1; 
	}
}
/*读电平时序函数*/
uint8 rd56(void)
{ 
	uint8 i,dd=0; 
	do_93=1; 
	for (i=0;i<8;i++) 
	{ 
		dd<<=1; 
		sk_93=1;_nop_();
		sk_93=0;_nop_(); 
		if (do_93) dd|=1; 
	} 
	return(dd);
}
/*********************************************************************************************************
** 函数名称: Read56()
** 功能描述: 读EEPROM字节
** 输 入: ADD:地址
**
** 输 出:读到的字节
** 调用模块: 

*------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 Read56(uint8 ADD)
{

	uint8 dat;
	EA=0;
	cs_93=sk_93=0;
	cs_93=1;
	high56();
	high56();
	low56();
	low56();
	wd56(ADD);
	dat=rd56();
	cs_93=0;
	EA=1;
	return(dat);
}

/*********************************************************************************************************
** 函数名称: EWEN56()
** 功能描述: 允许擦除/写
** 输 入:
**
** 输 出:
** 调用模块: 

*------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void EWEN56()
{
	_nop_();
	cs_93=1;
	high56();
	low56();
	low56();
	wd56(0xc0);
	cs_93=0;
}

/*********************************************************************************************************
** 函数名称: EWDS56()
** 功能描述: 禁止擦除/写
** 输 入:
**
** 输 出:
** 调用模块: 

*------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void EWDS56()
{
	_nop_();
	cs_93=1;
	high56();
	low56();
	low56();
	wd56(0x00);
	cs_93=0;
}
/*********************************************************************************************************
** 函数名称: Write56()
** 功能描述: 写EEPROM字节
** 输 入: ADD:地址,WBUF:写入的数
**
** 输 出:成功1,失败0
** 调用模块: 

*------------------------------------------------------------------------------------------------------
********************************************************************************************************/
bit Write56(uint8 ADD,uint8 WBUF)
{
	uint8 e=0;

	while (e<3) 
	{	EA=0;
		cs_93=sk_93=0;
		cs_93=1;
		EWEN56();
		_nop_();
		cs_93=1;
		_nop_();
		high56();
		low56();
		high56();
		low56();
		wd56(ADD);
		wd56(WBUF);
		cs_93=0;
		_nop_();
		cs_93=1;
		do_93=1;
		DelayMs(2);
		cs_93=0;
		EA=1;
		if (Read56(ADD)==WBUF) 
		{
			return(1);
		}
		e++;
	}
	EA=0;
	EWDS56();
	EA=1;
	return(0);
}
/*********************************************************************************************************
** 函数名称: Erase56()
** 功能描述: 删除EEPROM字节
** 输 入: ADD:地址
**
** 输 出:成功1,失败0
** 调用模块: 

*------------------------------------------------------------------------------------------------------
********************************************************************************************************/
bit Erase56(uint8 ADD)
{
	uint8 e=0;
	while (e<3) 
	{EA=0;
		cs_93=sk_93=0;
		cs_93=1;
		EWEN56();
		_nop_();
		cs_93=1;
		_nop_();
		high56();
		high56();
		high56();
		low56();
		wd56(ADD);
		low56();
		cs_93=0;
		_nop_();
		cs_93=1;
		do_93=1;
		DelayMs(2);
		cs_93=0;
		EA=1;
		if (Read56(ADD)==0xff) 
		{
			return(1);
		}
		e++;
	}
	EA=0;
	EWDS56();
	EA=1;
	return(0);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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