📄 at24cxx.c
字号:
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 + -