Jazykové sady v EEPROM v C

Zdravím vás,

potřeboval bych poradit, jakým způsobem řešit načítání jazykových sad z EEPROM. Jde o to, že mám vytvořené menu, kde je nastavení různých hodnot a potřeboval bych toto menu mít jak v češtině tak v angličtině. A dále také potřebuji uložit ty změněné hodnoty do paměti. Uložit pár dat do EEPROM mi nedělá problém, ale tady už jde o větší objem dat a o zachování nějaké struktury. Použiju na to PIC18F26K22 a 4-řádkový displej a nejlépe vnitřní EEPROM PICky.
Mohli by jste mě prosím nasměrovat tam, kde by jsem se mohl inspirovat?

Díky…

použij tablat a čti to z FLASH, vleze se ti tam toho mraky a výborně se z toho čte.

tak problemmom skor bude dlzka viet v cestine a angl. najpr vyrob menu ceske…s angl sa tam potom uz vojdes.

A neměl by někdo nějaký příklad. Zatím ani netuším jak by to mělo vypadat.

Ale pěkně blbě zapisuje.

Ještě jednou prosím o vysvětlení ukládání textových struktur do EEPROM. Informace o funkci “tablat” jsem žádné nenašel. Do této doby texty ukládám do polí přímo v programu. Takže něco takového bych chtěl uložit do EEPROM.

[code]const char napis[2][2][9]= {{" OSVIT ",
“MIX BILE”},
{“EXPOSURE”,
“WHITEBAL”}};

const char naex[2][4][9]= {{" AUTO ",
" JAS ",
" DOBA ",
" CLONKA “},
{” AUTO ",
" BRIGHT ",
" IRIS “,
" SHUTTER”}};

const char white[2][3][9]= {{" AUTO “,
" DO RUDA”,
" DOMODRA"},
{" AUTO ",
" RED ",
" BLUE "}};

const char num[2][7][9]= {{"Pretlak ",
" Kabel ",
" Spad ",
" Naklon “,
" Teplota”,
" Vykyv ",
" Rotace "
},
{“PRESSURE”,
" CABLE “,
" INCLINE”,
" TILT ",
" TEMPER ",
" CURL ",
“ROTATION”
}};
[/code]

Můžete mi prosím někdo ukázat jakým způsobem to vyřešit?
Dík moc…

Je tohle způsob jakým se řídit? Zatím to takhle funguje.

[code]//==================================
// Include files

#include <p18f8720.h>

//==================================
// Function prototypes

unsigned char ReadEEPROM(unsigned int address);
void WriteEEPROM(unsigned int address, unsigned char data);

//==================================
// Declare EEPROM data and other global variables
// Note that EEPROM is mapped to program memory address 0xF00000

#pragma romdata dataEEPROM=0xF00000
rom unsigned char FirstByte = 0x55;
rom unsigned char SecondByte;
rom unsigned char FirstArray] = {0x00, 0x01, 0x02};
rom unsigned char SecondArray[3];

#pragma udata
unsigned char TestVar;

//==================================
// Main routine

#pragma code
void main(void)
{
// Configure the device to access Data EEPROM memory
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;

// Read each of the EEPROM bytes defined in FirstByte and FirstArray]
TestVar = ReadEEPROM((unsigned int)&FirstByte);
TestVar = ReadEEPROM((unsigned int)&FirstArray[0]);
TestVar = ReadEEPROM((unsigned int)&FirstArray[1]);
TestVar = ReadEEPROM((unsigned int)&FirstArray[2]);

// Write to each of the EEPROM locations defined in SecondByte and SecondArray]
WriteEEPROM((unsigned int)&SecondByte, 0xaa);
WriteEEPROM((unsigned int)&SecondArray[0], 0x07);
WriteEEPROM((unsigned int)&SecondArray[1], 0x08);
WriteEEPROM((unsigned int)&SecondArray[2], 0x09);

// Wait forever
while (1);
}

//==================================
// EEPROM read routine

unsigned char ReadEEPROM(unsigned int Address)
{
EEADRH = (unsigned char)(Address>>8); // Load the high byte of the EEPROM address
EEADR = (unsigned char)Address; // Load the low byte of the EEPROM address
EECON1bits.RD = 1; // Do the read
return EEDATA; // Return with the data
}

//==================================
// EEPROM write routine

void WriteEEPROM(unsigned int Address, unsigned char Data)
{
static unsigned char GIE_Status; // Variable to save Global Interrupt Enable bit

EEADRH = (unsigned char)(Address>>8); // Load the high byte of the EEPROM address
EEADR = (unsigned char)Address; // Load the low byte of the EEPROM address
EEDATA = Data; // Load the EEPROM data
EECON1bits.WREN = 1; // Enable EEPROM writes
GIE_Status = INTCONbits.GIE; // Save the Global Interrupt Enable bit
INTCONbits.GIE = 0; // Disable global interrupts
EECON2 = 0x55; // Required sequence to start the write cycle
EECON2 = 0xAA; // Required sequence to start the write cycle
EECON1bits.WR = 1; // Required sequence to start the write cycle
INTCONbits.GIE = GIE_Status; // Restore the Global Interrupt Enable bit
EECON1bits.WREN = 0; // Disable EEPROM writes
while (EECON1bits.WR); // Wait for the write cycle to complete
}
[/code]