Forum: Mikrocontroller und Digitale Elektronik xdata mit Keil compiler und 8051


von Flipp (Gast)


Lesenswert?

Halli Hallo,

vorneweg schon mal - ich bin noch relativ neu in der uC Programmierung, 
also habt etwas Nachsicht wenn ich ein wenig unbeholfen frag. ^^

Ich habe hier also einen 8051F340 den ich in C programmiere ( benutze 
die IDE von SiLabs und den Compiler von Keil )

Mein Problem ist nun folgendes - ich schicke dem uC Daten vom PC ( was 
ohne Probleme funktioniert ) welche ich dann im externen Speicher 
ablegen will um später darauf zuzugreifen.

Nun ist es mir leider Schleierhaft wie ich dass in C umsetze
z.B.
1
unsigned char xdata xdata_buffer [64] _at_ 0x0200;
2
memcpy (xdata_buffer, ReadBuffer, sizeof (xdata_buffer));

Soweit komme ich ja noch mit, dass er mir dann den Inhalt von ReadBuffer 
an die Adresse 0x0200 schreibt.
Aber ich würde gerne wissen ob es auch eine Möglichkeit den 
Adressbereich der Variable xdata_buffer zu ändern.
Ich will z.B. in einer Schleife einige Adressbereiche durchgehen und es 
wär ja Schwachsinn für jeden eine eigene xdata Variable anzulegen.

Hoffe ich konnte mein Problem einigermaßen erklären ^^
Viele Grüße

Tobi

von Achim M. (minifloat)


Lesenswert?

Schau mal was die da machen:
http://www.mikrocontroller.net/articles/Bin%C3%A4re_Daten_zum_Programm_hinzuf%C3%BCgen

Ah, falsche Antwurt von mir. Du brauchst einen Pointer. Die Basisadresse 
deiner Daten bleibt gleich.

mfg mf

von Flipp (Gast)


Lesenswert?

Hey,

danke für deine Antwort.
Aber wie müsste ich den Pointer initialisieren dass er auf den externen 
Speicher zeigt? Ganz normal? Oder muss cih da net auch irgendwo das 
"xdata" utnerbringen?
Viele Grüße

von Kernel (Gast)


Lesenswert?


von Flipp (Gast)


Lesenswert?

Ah klasse, das hat geholfen ^^
Vielen Dank =)

von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

Flipp schrieb:
> Ich habe hier also einen 8051F340 den ich in C programmiere ( benutze
> die IDE von SiLabs und den Compiler von Keil )

OK, den habe ich auch, aber wenn Du schon den F340 verwendest,
warum schauste dann nicht in die AppNote zum USB-Memory-Stick?

Da steht alles drin inclusive des vollständigen Programmcodes.

Grüße
Michelle

von Matthias K. (matthiask)


Lesenswert?

>>unsigned char xdata xdata_buffer [64] at 0x0200;

In C sollte man den Compiler/Linker die gesamte Speicherverwaltung 
übernehmen lassen, also auf das at .. verzichten. Die absolute Adresse 
von xdata_buffer ist uninteressant. Du greifst über einen Zeiger oder 
einfach über eine Index-Variable darauf zu.

Bei Keil gibst Du in den Projekteinstellungen dann den XDATA Bereich an.

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
Noch kein Account? Hier anmelden.