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

📄 eeprom.c

📁 ADE7758三相电能芯片读写源程序
💻 C
字号:

#define	EEPROM_GLOBALS
#include "includes.h"


void Eepr_Start(void)
{
	Set_OutPut_P_EeprScl;Set_OutPut_P_EeprSda;
	nop();nop();nop();nop();nop();
	us_delay(8);
	P_EeprSda_High;
	us_delay(2);
	P_EeprScl_High;
	nop();nop();nop();nop();nop();
	P_EeprSda_Low;
	nop();nop();nop();nop();nop();
	nop();nop();nop();nop();nop();
	P_EeprScl_Low;
      nop();nop();nop();nop();nop();
}

void Eepr_Stop(void)
{
	Set_OutPut_P_EeprScl;
	nop();nop();nop();
	//P_EeprSda_High;
	Set_OutPut_P_EeprSda;
	nop();nop();nop();
	P_EeprScl_Low;
       nop();nop();nop();
	P_EeprSda_Low;
	nop();nop();nop();nop();nop();   
	P_EeprScl_High;
	nop();nop();nop();nop();nop();   
	nop();nop();nop();nop();nop();
	P_IO.PDR1.BYTE|=0x10;
	P_EeprSda_High;
	nop();nop();nop();nop();nop();
}

void Eepr_AckWr(void)
{
	//Set_InPut_P_EeprSda;
	nop();nop();nop();nop();nop();nop();
	P_EeprScl_High;	
	us_delay(1);
	P_EeprScl_Low;
	nop();nop();nop();nop();nop();nop();
	//Set_OutPut_P_EeprSda;
}

void Eepr_AckRd(void)
{
	Set_OutPut_P_EeprSda;
	nop();nop();nop();
	P_EeprSda_Low;
	nop();nop();nop();
	P_EeprScl_High;	
	us_delay(1);
	P_EeprScl_Low;
	nop();nop();nop();nop();nop();nop();
	Set_InPut_P_EeprSda;
	nop();nop();
}

uchar Eepr_Rd1Byte(void)
{
	union UN_DEF LUB_data;
	uchar i;
	Set_InPut_P_EeprSda;
	LUB_data.BYTE=0;
	for(i=0;i!=8;i++)
		{
		P_EeprScl_High;
		us_delay(1);
		LUB_data.BIT.b0=P_EeprSda;
		P_EeprScl_Low;					
		if(i==7)
			{
			P_EeprSda_Low;
			//Eepr_AckRd();
			return LUB_data.BYTE;
			}	
		LUB_data.BYTE<<=1;
		us_delay(1);
		}
}

void Eepr_Wr1Byte(uchar PB_data)
{
	uchar i;
	union UN_DEF LUB_data;
	Set_OutPut_P_EeprSda;
	LUB_data.BYTE=PB_data;
	for(i=0;i!=8;i++)
		{
		P_EeprSda=LUB_data.BIT.b7;
		us_delay(1);
		P_EeprScl_High;		
		LUB_data.BYTE<<=1;
		us_delay(1);
		P_EeprScl_Low;
		us_delay(1);
		}
	P_EeprSda_Low;
	Eepr_AckWr();
}

void Read_EeprData(uchar *PP_DataAddr,uchar PB_Num,uchar PB_EeprAddr)
{
	uchar i;
	Eepr_Start();
	Eepr_Wr1Byte(Eepr_Ctrl_Wr);
	
	Eepr_Wr1Byte(0);

	Eepr_Wr1Byte(PB_EeprAddr);

	Eepr_Start();
	Eepr_Wr1Byte(Eepr_Ctrl_Rd);
	for(i=0;i!=PB_Num;i++)
		{
		*(PP_DataAddr+i)=Eepr_Rd1Byte();
		if(i==PB_Num-1)
			{
			Set_OutPut_P_EeprSda;
			nop();nop();nop();
			P_EeprSda_High;
			nop();nop();nop();
			P_EeprScl_High;	
			us_delay(1);
			P_EeprScl_Low;
			nop();nop();nop();
			//nop();nop();nop();
			//Set_InPut_P_EeprSda;
			nop();nop();
			}
		else
			{
			Eepr_AckRd();
			}
		}
	Eepr_Stop();
	
}

void Write_EeprData(uchar *PP_DataAddr,uchar PB_Num,uchar PB_EeprAddr)
{
	uchar i;
	Eepr_Start();
	Eepr_Wr1Byte(Eepr_Ctrl_Wr);
	
	Eepr_Wr1Byte(0);

	Eepr_Wr1Byte(PB_EeprAddr);
	for(i=0;i!=PB_Num;i++)
		{
		Eepr_Wr1Byte(*(PP_DataAddr+i));
		}
	
	Eepr_Stop();

}



⌨️ 快捷键说明

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