Hallo zusammen Ich möchte das interne EEPROM des at89s8253 ansteuern. Ich haben hier im Forum auch schon gestöbert und etwas gefunden. Dies habe ich kopiert und in mein Programm eingebunden. Es läuft alles super, das ein- wie auch das auslesen. Nun habe ich aber eine Frage beim einlesen: Wenn ich jetzt so ein Array im EEPROM abspeichern will, muss ich für jede Arraystelle eine neue zeile nehmen um einen Wert zu speichern? Also z.b so: arr[0]=12; arr[1]=15; arr[2]=28; arr[3]=33; oder kann ich es irgendwie auch alles aufeinmal abspeichenr wie das: arr[4]={12,15,28,33}; Hier wäre noch mein code zum einlesen in das EEPROM falls dieser hilft. unsigned char xdata arr[20]; void init(){ EECON |= 0x08; //EEMEM=1 Memory Select interner XDATA EECON |= 0x10; //EEMWE=1 Write-Enable EECON |= 0x20; //EELD=1 Page-Mode 32Byte arr[0]= 12; arr[1]= 15; arr[2]= 28; ... EECON &= 0xDF; //EELD=0 Page-Mode beenden arr[19] = 17; // Schreiben auslösen (Kennbyte, nur Bsp.) while (!(EECON & 0x02)); // Warten bis Bytes im EEPROM geschrieben sind EECON &= 0xEF; //EEMWE=0 Write-Disable EECON &= 0xF7; }
> oder kann ich es irgendwie auch alles aufeinmal abspeichenr wie das: > arr[4]={12,15,28,33}; Das geht nicht. Was du machen kannst ist eine Funktion, die die Adresse bzw. einen Pointer des XDATA-Arrays bekommt und in einer Schleife die jeweiligen Werte ins EEPROM schreibt. Ralf
Ralf schrieb: > Was du machen kannst ist eine Funktion, die die Adresse > > bzw. einen Pointer des XDATA-Arrays bekommt und in einer Schleife die > > jeweiligen Werte ins EEPROM schreibt. Ja auf die Idee mit einer Schleife bin ich auch gekommen. Nur die Werte die Ich einlesen muss sind nicht der Reihenfolge, sonder wild durcheinander und da kommt keine Schleife in Frage... Eine andere Möglichkeit gibt es nicht?
> Nur die Werte die Ich einlesen muss sind nicht der Reihenfolge, sonder > wild durcheinander und da kommt keine Schleife in Frage... Nur zur Klärung: Meinst du die Werte selbst oder die Position innerhalb des Arrays? Im ersten Fall geht's mit einer Schleife, im zweiten Fall kannst du ein temporäres Array verwenden und füllen und dieses dann in einer Schleife schreiben. Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.