Hallo,
ich programmiere hier auf einem c51 und verwende keil als
editor/debugger (ich versuche ein paar Enocean-Module zu programmieren)
Ich würde gerne über mehrere c-Files hinaus auf eine globale Variable
zugreifen, aber meine Initialisierungswerte werden einfach nicht so
übernommen, wie ich mir das vorstelle. Ich versuche das Ganze mal
beispielhaft darzustellen:
Ich habe mir dafür in meinem header.h (der in allen c-files, die auf die
Variable zugreifen möchten, eingebunden wird) meine Variable als extern
deklariert:
1 | extern uint8 data my_count;
|
Nun möchte ich in meinem main.c in einer Funktion int CountTest(testvar)
auf my_count zugreifen, deshalb habe ich my_count in main.c
folgendermaßen vor void main() definiert und initialisiert:
Nun will ich in der besagten Funktion CountTest (die testvar übergeben
bekommt) auf my_count zugreifen:
1 | int CountTest(testvar)
|
2 | {
|
3 | int i=0;
|
4 | if (testvar == 1)
|
5 | my_count++;
|
6 |
|
7 | ....
|
8 |
|
9 | if (my_count > 10)
|
10 | tu irgendwas;
|
11 | ....
|
12 |
|
13 | }
|
Nun habe ich das Problem, dass sich my_count anscheinend nie ändert, mir
kommt es so vor, als würde es immer wieder von neuem mit 1 initialisiert
werden. Weise ich my_count keinen Wert zu, dann weist der Compiler ihm
irgendeinen hohen (zufälligen?) Wert zu - da ich damit aber gerne zählen
würde, brauche ich einen bestimmten Anfangswert.... Ich hätte die
Funktion CountTest auch schon extern deklariert in der header.h mit
(extern int CountTest(int testvar);) aber das bringt auch nicht wirklich
was...
Was mache ich falsch?
Danke für jeden Tipp!