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

📄 at24cxx.c

📁 AT24C01~24C16燒錄器程序,可以通過麼MENU選擇燒錄IC型號
💻 C
📖 第 1 页 / 共 2 页
字号:
	
	FlagError=0;
	//-------------------------------------------------------------------------------------
	//read sample code
			if(FlagPort1ProgramEn==1)
				{
					FlagEEPROM=EEPROM1;
					ptr=Port1SampleCode;
				}
			else if(FlagPort2ProgramEn==1)
				{
					FlagEEPROM=EEPROM3;
					ptr=Port2SampleCode;
				}
			else if(FlagPort3ProgramEn==1)
				{
					FlagEEPROM=EEPROM5;
					ptr=Port3SampleCode;
				}
			Bank=BANK0;
			MaxProgramDataLenngth=2048; //define AT24C16
			while(MaxProgramDataLenngth!=0)
				{
					if(MaxProgramDataLenngth>256)
						{
							PageLen=256;
							MaxProgramDataLenngth=MaxProgramDataLenngth-256;
						}
					else
						{
							PageLen=MaxProgramDataLenngth;
							MaxProgramDataLenngth=MaxProgramDataLenngth-PageLen;
						}
					LengthA=0;
					Len=0;
					while(LengthA<PageLen)
						{
							Read24cxx(Bank,EmpBuffer,Len,8);
							if(FlagError!=0)
								break;
							for(i=0;i<8;i++)
								{
									*ptr=EmpBuffer[i];
									LengthA++;
									ptr++;
								}
							Len=Len+8;
						}
					if(FlagError!=0)
						break;
					Bank=Bank+0x02;
				}
			if(FlagError!=0)
				{
					DisplayStringData(0,StrError,sizeof(StrError));
					DisplayStringData(1,StrInitialError_SaveSampleCode,sizeof(StrInitialError_SaveSampleCode));
					while(1);
				}
}
//****************************************************************************************************
// initial read save sample code 
//****************************************************************************************************
void SaveSamleCode(void) 
{
	U8 CharA;
	
	for(CharA=0;CharA<8;CharA++)
		{
			EmpBuffer[CharA]=StrSaveSampStart[CharA];
		}
	SendCommand(); //slave board start save sample code
	FlagPort1ProgramEn=1;
	FlagPort2ProgramEn=0;
	FlagPort3ProgramEn=0;
	StartSave();
	FlagPort1ProgramEn=0;

	FlagPort1ProgramEn=0;
	FlagPort2ProgramEn=1;
	FlagPort3ProgramEn=0;
	StartSave();
	FlagPort2ProgramEn=0;

	FlagPort1ProgramEn=0;
	FlagPort2ProgramEn=0;
	FlagPort3ProgramEn=1;
	StartSave();
	FlagPort3ProgramEn=0;	

	WaitResult();//Receive Slave board save sample code result
	if((FlagError!=0)||(EmpBuffer[0]!=0x40))
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_SaveSampleCode,sizeof(StrInitialError_SaveSampleCode));
			while(1);
		}
}
//****************************************************************************************************
// Program Port1 
//****************************************************************************************************
void ProgramPort1(void)
{
	U8 CharA;

	if(FlagPort1State==SwitchOFF)
		return;
	FlagPort1ProgramEn=1;
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort1EEPROMType[CharA];
					else
						{
							if(FlagPort1EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort1EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort1EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort1EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort1EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	StartProgram();
	FlagPort1ProgramEn=0;
	if(FlagError!=0)
		FlagPort1ProgramNG=1;
}
//****************************************************************************************************
// Program Port2 
//****************************************************************************************************
void ProgramPort2(void)
{
	U8 CharA;

	if(FlagPort2State==SwitchOFF)
		return;
	FlagPort2ProgramEn=1;
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort2EEPROMType[CharA];
					else
						{
							if(FlagPort2EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort2EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort2EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort2EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort2EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	StartProgram();
	FlagPort2ProgramEn=0;
	if(FlagError!=0)
		FlagPort2ProgramNG=1;
}
//****************************************************************************************************
// Program Port3 
//****************************************************************************************************
void ProgramPort3(void)
{
	U8 CharA;

	if(FlagPort3State==SwitchOFF)
		return;
	FlagPort3ProgramEn=1;
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort3EEPROMType[CharA];
					else
						{
							if(FlagPort3EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort3EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort3EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort3EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort3EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	StartProgram();
	FlagPort3ProgramEn=0;
	if(FlagError!=0)
		FlagPort3ProgramNG=1;
}
//****************************************************************************************************
// Program Port4 
//****************************************************************************************************
void ProgramPort4(void)
{
	U8 CharA;

	if(FlagPort4State==SwitchOFF)
		return;
	SetPortLed(PORT4,LED_Busy);
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort4EEPROMType[CharA];
					else
						{
							if(FlagPort4EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort4EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort4EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort4EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort4EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	DisplayStringData(1,SystemPort4Program,sizeof(SystemPort4Program));
	Delay(T1s);
	for(CharA=0;CharA<8;CharA++)
		{
			EmpBuffer[CharA]=StrPort4ProgramStart[CharA];
		}
	EmpBuffer[1]=FlagPort4EEPROMType;
	EmpBuffer[2]=FlagSelfStudy&0x01;
	SendCommand();//slave board port 4 start program
	WaitResult(); //Receive Slave board port 4 program result
	if(EmpBuffer[0]!=0x04)
		{
			FlagPort4ProgramNG=1;
			DisplayStringData(1,SystemPort4ProgramNG,sizeof(SystemPort4ProgramNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort4ProgramOK,sizeof(SystemPort4ProgramOK));
			Delay(T10ms*50);
			DisplayStringData(1,SystemPort4Verify,sizeof(SystemPort4Verify));
		}
	WaitResult(); //Receive Slave board port 4 Verify result
	if(EmpBuffer[0]!=0x0a)
		{
			FlagPort4ProgramNG=1;
			DisplayStringData(1,SystemPort4VerifyNG,sizeof(SystemPort4VerifyNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort4VerifyOK,sizeof(SystemPort4VerifyOK));
			SetPortLed(PORT4,LED_Ready);
			Delay(T1s);
		}
}
//****************************************************************************************************
// Program Port5 
//****************************************************************************************************
void ProgramPort5(void)
{
	U8 CharA;

	if(FlagPort5State==SwitchOFF)
		return;
	SetPortLed(PORT5,LED_Busy);
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort5EEPROMType[CharA];
					else
						{
							if(FlagPort5EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort5EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort5EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort5EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort5EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	DisplayStringData(1,SystemPort5Program,sizeof(SystemPort5Program));
	Delay(T1s);
	for(CharA=0;CharA<8;CharA++)
		{
			EmpBuffer[CharA]=StrPort5ProgramStart[CharA];
		}
	EmpBuffer[1]=FlagPort5EEPROMType;
	EmpBuffer[2]=FlagSelfStudy&0x01;
	SendCommand(); //slave board port 5 start program
	WaitResult();  //Receive Slave board port 5 program result
	if(EmpBuffer[0]!=0x05)
		{
			FlagPort5ProgramNG=1;
			DisplayStringData(1,SystemPort5ProgramNG,sizeof(SystemPort5ProgramNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort5ProgramOK,sizeof(SystemPort5ProgramOK));
			Delay(T10ms*50);
			DisplayStringData(1,SystemPort5Verify,sizeof(SystemPort5Verify));
		}
	WaitResult(); //Receive Slave board port 5 Verify result
	if(EmpBuffer[0]!=0x0b)
		{
			FlagPort5ProgramNG=1;
			DisplayStringData(1,SystemPort5VerifyNG,sizeof(SystemPort5VerifyNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort5VerifyOK,sizeof(SystemPort5VerifyOK));
			SetPortLed(PORT5,LED_Ready);
			Delay(T1s);
		}
}
//****************************************************************************************************
// Program Port6 
//****************************************************************************************************
void ProgramPort6(void)
{
	U8 CharA;

	if(FlagPort6State==SwitchOFF)
		return;
	SetPortLed(PORT6,LED_Busy);
	for(CharA=0;CharA<24;CharA++)
		{
			if(CharA==0)
				EmpBufferA[CharA]=0x2a;
			else 
				{
					if(CharA<7)
						EmpBufferA[CharA]=StrPort6EEPROMType[CharA];
					else
						{
							if(FlagPort6EEPROMType==AT24C01)
								EmpBufferA[CharA]=StrAT24C01[CharA];
							else if(FlagPort6EEPROMType==AT24C02)
								EmpBufferA[CharA]=StrAT24C02[CharA];
							else if(FlagPort6EEPROMType==AT24C04)
								EmpBufferA[CharA]=StrAT24C04[CharA];
							else if(FlagPort6EEPROMType==AT24C08)
								EmpBufferA[CharA]=StrAT24C08[CharA];
							else if(FlagPort6EEPROMType==AT24C16)
								EmpBufferA[CharA]=StrAT24C16[CharA];
						}
				}
		}
	DisplayStringData(0,EmpBufferA,24);
	DisplayStringData(1,SystemPort6Program,sizeof(SystemPort6Program));
	Delay(T1s);
	for(CharA=0;CharA<8;CharA++)
		{
			EmpBuffer[CharA]=StrPort6ProgramStart[CharA];
		}
	EmpBuffer[1]=FlagPort6EEPROMType;
	EmpBuffer[2]=FlagSelfStudy&0x01;
	SendCommand(); //slave board port 6 start program
	WaitResult();  //Receive Slave board port 6 program result
	if(EmpBuffer[0]!=0x06)
		{
			FlagPort6ProgramNG=1;
			DisplayStringData(1,SystemPort6ProgramNG,sizeof(SystemPort6ProgramNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort6ProgramOK,sizeof(SystemPort6ProgramOK));
			Delay(T10ms*50);
			DisplayStringData(1,SystemPort6Verify,sizeof(SystemPort6Verify));
		}
	WaitResult(); //Receive Slave board port 6 Verify result
	if(EmpBuffer[0]!=0x0c)
		{
			FlagPort6ProgramNG=1;
			DisplayStringData(1,SystemPort6VerifyNG,sizeof(SystemPort6VerifyNG));
			Delay(T1s);
			return;
		}
	else
		{
			DisplayStringData(1,SystemPort6VerifyOK,sizeof(SystemPort6VerifyOK));
			SetPortLed(PORT6,LED_Ready);
			Delay(T1s);
		}
}
//****************************************************************************************************
// save user setting
//****************************************************************************************************
void SaveSettingData(void)
{
	FlagEEPROM=EEPROM7;
	EmpBuffer[0]=FlagPort1State;
	EmpBuffer[1]=FlagPort2State;
	EmpBuffer[2]=FlagPort3State;
	EmpBuffer[3]=FlagPort4State;
	EmpBuffer[4]=FlagPort5State;
	EmpBuffer[5]=FlagPort6State;
	Write24cxx(BANK1,EmpBuffer,0,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataWrite,sizeof(StrInitialError_HistoryDataWrite));
			while(1);
		}
	EmpBuffer[0]=FlagPort1EEPROMType;
	EmpBuffer[1]=FlagPort2EEPROMType;
	EmpBuffer[2]=FlagPort3EEPROMType;
	EmpBuffer[3]=FlagPort4EEPROMType;
	EmpBuffer[4]=FlagPort5EEPROMType;
	EmpBuffer[5]=FlagPort6EEPROMType;
	Write24cxx(BANK1,EmpBuffer,8,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataWrite,sizeof(StrInitialError_HistoryDataWrite));
			while(1);
		}
}
//****************************************************************************************************
// get setting
//****************************************************************************************************
void GetSettingData(void)
{
	FlagEEPROM=EEPROM7;
	Read24cxx(BANK1,EmpBuffer,0,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataRead,sizeof(StrInitialError_HistoryDataRead));
			while(1);
		}
	if((EmpBuffer[0]>1)||(EmpBuffer[1]>1)||(EmpBuffer[2]>1)||(EmpBuffer[3]>1)||(EmpBuffer[4]>1)||(EmpBuffer[5]>1))
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataType,sizeof(StrInitialError_HistoryDataType));
			while(1);
		}
	FlagPort1State=EmpBuffer[0];
	FlagPort2State=EmpBuffer[1];
	FlagPort3State=EmpBuffer[2];
	FlagPort4State=EmpBuffer[3];
	FlagPort5State=EmpBuffer[4];
	FlagPort6State=EmpBuffer[5];
		
	Read24cxx(BANK1,EmpBuffer,8,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataRead,sizeof(StrInitialError_HistoryDataRead));
			while(1);
		}
	if((EmpBuffer[0]>4)||(EmpBuffer[1]>4)||(EmpBuffer[2]>4)||(EmpBuffer[3]>4)||(EmpBuffer[4]>4)||(EmpBuffer[5]>4))
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataType,sizeof(StrInitialError_HistoryDataType));
			while(1);
		}
	FlagPort1EEPROMType=EmpBuffer[0];
	FlagPort2EEPROMType=EmpBuffer[1];
	FlagPort3EEPROMType=EmpBuffer[2];
	FlagPort4EEPROMType=EmpBuffer[3];
	FlagPort5EEPROMType=EmpBuffer[4];
	FlagPort6EEPROMType=EmpBuffer[5];
	
}
//****************************************************************************************************
// 2-Wirte Serial CMOS EEPROM Write Protect
//****************************************************************************************************
void SetEPROMWriteProtect(bit set)
{
	WP_A=set;
	LED_CS1=LEDStatusA;
	Delay(T10ms);
}
//****************************************************************************************************
// Clear History Data Memory
//****************************************************************************************************
void ClearHistoryDataMemory(void)
{
	
	FlagEEPROM=EEPROM7;
	EmpBuffer[0]=SwitchON;
	EmpBuffer[1]=SwitchON;
	EmpBuffer[2]=SwitchON;
	EmpBuffer[3]=SwitchON;
	EmpBuffer[4]=SwitchON;
	EmpBuffer[5]=SwitchON;
	Write24cxx(BANK1,EmpBuffer,0,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataWrite,sizeof(StrInitialError_HistoryDataWrite));
			while(1);
		}
	EmpBuffer[0]=AT24C02;
	EmpBuffer[1]=AT24C02;
	EmpBuffer[2]=AT24C02;
	EmpBuffer[3]=AT24C02;
	EmpBuffer[4]=AT24C02;
	EmpBuffer[5]=AT24C02;
	Write24cxx(BANK1,EmpBuffer,8,8);
	if(FlagError!=0)
		{
			DisplayStringData(0,StrError,sizeof(StrError));
			DisplayStringData(1,StrInitialError_HistoryDataWrite,sizeof(StrInitialError_HistoryDataWrite));
			while(1);
		}
}
//------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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