95 lines
2.2 KiB
C
95 lines
2.2 KiB
C
|
#include "H/Function_Init.H"
|
|||
|
#include "IAP_Lib/IAP_Option_EW.h"
|
|||
|
unsigned char code* POINT; //<2F><>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8>0x0000
|
|||
|
|
|||
|
#define IAP_APROM 0x00
|
|||
|
#define IAP_UniqueID 0x01
|
|||
|
#define IAP_EEPROM 0x02
|
|||
|
#define IAP_LDROM 0x03
|
|||
|
|
|||
|
unsigned char IAP_Read(unsigned long IAP_IapAddr, unsigned char area);
|
|||
|
|
|||
|
void IAP_Test(void)
|
|||
|
{
|
|||
|
unsigned char IapReadData1,IapReadData2; //<2F><><EFBFBD>崢<EFBFBD><E5B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵı<DDB5><C4B1><EFBFBD>
|
|||
|
|
|||
|
IAP_CodeSectorEraseOption(0xFFFE); //<2F><>CODE 0x1FFFE<46><45>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
IAP_CodeProgramByteOption(0xFFFE, 0x55); //<2F><>CODE 0x1FFFE<46><45>ַд<D6B7><D0B4>0x55
|
|||
|
IapReadData1 = IAP_Read(0xFFFE, IAP_APROM); //<2F><>ȡCODE 0x1FFFE<46><45>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
IAP_EEPROMSectorEraseOption(0x1000); //<2F><>EEPROM 0x1000<30><30>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
IAP_EEPROMProgramByteOption(0x1000, 0xAA); //<2F><>EEPROM 0x1000<30><30>ַд<D6B7><D0B4>0xAA
|
|||
|
IapReadData2 = IAP_Read(0x1000, IAP_EEPROM); //<2F><>ȡEEPROM 0x1000<30><30>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
while(1)
|
|||
|
{
|
|||
|
if((IapReadData1 == 0x55) && (IapReadData2 == 0xAA))
|
|||
|
{
|
|||
|
P02 = ~P02;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
P03 = ~P03;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>unsigned char IAP_Read(unsigned long Add,unsigned char ADER)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>Byte<EFBFBD><EFBFBD>ȡ
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Add <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ(0X00~0X1FFFF<EFBFBD><EFBFBD>FLASH<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|||
|
* Data<EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Byte,ADER:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> APROMΪ00,EEPROMΪ02
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
**************************************************/
|
|||
|
unsigned char IAP_Read(unsigned long Add, unsigned char Iapade)
|
|||
|
{
|
|||
|
unsigned char IAP_IapData;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ROMBNK<4E><4B>IAPADE<44><45>EA
|
|||
|
unsigned char tempADER = IAPADE;
|
|||
|
unsigned char tempEA = EA;
|
|||
|
|
|||
|
unsigned char code* point = 0;
|
|||
|
|
|||
|
EA = 0;//<2F>ر<EFBFBD><D8B1>ж<EFBFBD>
|
|||
|
|
|||
|
IAPADE = Iapade;
|
|||
|
|
|||
|
IAP_IapData = *(point + Add);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ROMBNK<4E><4B>IAPADE<44><45>EA<45><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MOVCλ<43>ó<EFBFBD><C3B3><EFBFBD>
|
|||
|
IAPADE = tempADER;
|
|||
|
EA = tempEA;
|
|||
|
|
|||
|
return IAP_IapData;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void EEPROM_Write_k(long Dat)
|
|||
|
{
|
|||
|
uchar i;
|
|||
|
uchar temp[4];
|
|||
|
temp[0] = (Dat >> 24) & 0xFF;
|
|||
|
temp[1] = (Dat >> 16) & 0xFF;
|
|||
|
temp[2] = (Dat >> 8) & 0xFF;
|
|||
|
temp[3] = Dat & 0xFF;
|
|||
|
IAP_EEPROMSectorEraseOption(0x1600); //<2F><>EEPROM 0x1000<30><30>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>!!!!ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ֽڣ<D6BD>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD>һҳ<D2BB><D2B3>512Bytes<65><73>
|
|||
|
for(i=0;i<4;i++)
|
|||
|
{
|
|||
|
IAP_EEPROMProgramByteOption(0x1600+i,temp[i]); //<2F><>EEPROM 0x1000<30><30>ַд<D6B7><D0B4>0xAA
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
long EEPROM_Read_k(void)
|
|||
|
{
|
|||
|
uchar i;
|
|||
|
uchar buff;
|
|||
|
long dat =0;
|
|||
|
for(i=0;i<4;i++)
|
|||
|
{
|
|||
|
buff = IAP_Read(0x1600+i, IAP_EEPROM);
|
|||
|
dat |= (long)buff<<24-i*8;
|
|||
|
}
|
|||
|
return dat;
|
|||
|
}
|
|||
|
|
|||
|
|