Arrays bei 8051. Was muss ich beachten?

OP #868437
Lesenswert?

Hallo an alle,

ich verwende in meinem µC Programm für einen AT89C51CC03, das ich in 
Keil µVision 3 erstelle, einige Arrays.
Was muss ich dabei beachten?
Datentyp?
Speicherbereich?

Ich habe es bis jetzt so erstellt:

header:
extern xdata unsigned int test1 [50];

main:
xdata unsigned int test1 [50];

Ist das so richtig?

Ich habe folgendes Problem:
Ich habe ein Schleife, die mir Werte in den Feldern ablegt. Sie beginnt 
bei Feld 0. Wenn die max. Anzahl von 50 erreicht ist, wird die schleife 
wieder auf 0 zurückgesetzt und beginnt von neuem Werte in dem Array 
abzulegen. Wenn ich das mehrmals durchlaufe, habe ich Fehler im Programm 
(ich gebe die Werte über ein LCD Display aus).

An was kann das liegen?

Danke für die Hilfe.

Gruss Sascha
OP #868497
Lesenswert?

Hallo Timo H.

normalerweise Poste ich immer mein Code aber da es sich nur um eine 
Schleife handelt dachte ich,das ich ihn weglassen kann. Die Schleife 
funktioniert auch. Das habe ich ausgiebig getestet.

Die Idee mit dem Stack hatte ich auch schon. Zu dem Thema Stack hab ich 
schoneinmal ein Beitrag im Forum gepostet aber leider keine Antwort 
erhalten. Leider hab ich auch keine genauen Informationen über den Stack 
und ich habe noch keine Seite gefunden, die mir den Stack verständlich 
erklärt.

In meinem Programm sieht es so aus:

xdata unsigned int test 1 [50];
xdata unsigned int test 2 [50];
xdata unsigned int test n [50];

Ich habe 24 solcher Arrays in meinem Programm da ich sehr viele Werte 
abspeichern muss. Im Worst Case werden in alle Felder der Reihe nach 
Werte abgespeichert und auf meinem Display ausgegeben. Sobald die max. 
Feldanzahl erreicht wird, werden die neuen Werte wieder ab Feld 0 
abgespeichert. Die alten Werte werden überschrieben.
Sollte ich die Felder befor ich sie überschreibe auf 0 setzen?

Gruss und vielen Dank für die Hilfe Sascha
Gast #868502
Lesenswert?

Könnte es daran liegen, dass du nicht bedacht hast das ein Array [50] 
von 0 bis 49 geht und nicht von 0 bis 50?

nur so eine Vermutung

> Anzahl von 50 erreicht ist, wird die schleife
> wieder auf 0 zurückgesetzt und beginnt von neuem Werte in dem Array
> abzulegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren