/* eeprom.c : User can read and write integer and float data to eeprom Compiler: BC++ 3.1, Turbo C ++ 1.01(3.01) (free from http://community.borland.com/museum) MSC 6.0, MSVC 1.52. Compile mode: large Project: eeprom.c ..\Lib\(8000.Lib, 8000E.lib) Hardware: 8000 Detail description: To read write the eeprom,user must know the block number and address index of the data for 8000 system, the block number (0 to 7) and there ar 256 bytes for each block The total bytes of the eeprom are 2048(2KBytes) For this demo, we will use show how to read write the integer and float data from eeprom to save interger data, it needs 2 bytes for each data to save float data, it needs 4 bytes for each data [15 Nov,2006] original demo by kevin, modified by martin ---------------------------------------------------------------------- */ #include "..\..\lib\8000E.h" void main(void) { int iBlock,iNo,iRet,iValue[128]; float fValue[64]; int eret=-1; //char testchar[16]="0123456789ABCDEF"; char testchar[16]="01234"; char getchar[16]="FFFFF"; int blockk=4,partt=8; int c; //Initial some system information to let //following code can run on 40/80 CPU. InitLib(); for (;;) { if (partt==15) { partt=8; if (blockk==5) blockk=4; else blockk++; } else partt++; eret=WriteEEPROM(blockk,partt,0,testchar,16); if (eret==0) { //Print ("B%dP%02d Write EEP data OK, testchar=%s ",blockk,partt,testchar); Print ("B%dP%02d Write EEP data OK, ",blockk,partt); eret=ReadEEPROM(blockk,partt,0,getchar,16); if (memcmp(testchar,getchar,16)) { Print ("\n\rB%P$02d d Read EEP fail,ret=%d,data=%s ",blockk,partt,eret,getchar); } else Print ("B%dP%02d Read EEP ok,ret=%d,get data = %s \r",blockk,partt,eret,getchar); //Print (" Read EEP data OK "); } else Print ("\n\rB%02dP%dWrite EEP fail,ret=%d",blockk,partt,eret); if (Kbhit()) { c=Getch(); switch (c) { case 'q' : case 'Q' : Print ("\n\r exit program \n\r"); return; break; default : break; } } Delay (500); } } int WriteEEPROM(int block, int part, int addrInPart,char *btData, int szData) { char btDt[16]; int i; if(part>15) return 1; if((addrInPart>15) || (addrInPart+szData>16)) return 2; if(szData>16) return 3; if(EE_MultiRead(block, part*16, 16, btDt)!=0) return 4; for(i=0;i15) return 1; if((addrInPart>15) || (addrInPart+szData>16)) return 2; if(szData>16) return 3; if(EE_MultiRead(block, part*16, 16, (char*)&btDt)!=0) return 4; for(i=0;i