Wert verändert sich bei Übergabe

Gast #3035896
Lesenswert?

Hallo,
mit der Variable EEAdr_i wird beim ersten Aufruf von der Funktion 
lesen_1byte der Wert 0x0000 übergeben.
Statt diesem Übergabewert steht aber in der Variable EEAdr der Wert 
0xFF48.
Da ich jetzt wohl den Wald vor lauter Bäumen nicht mehr sehe meine 
Frage: Wo könnte der Fehler stecken?
1
void lesen_1byte(unsigned short);
2

3
void alles_lesen(void)
4
{
5
  unsigned short EEAdr_max;
6
  unsigned short EEAdr_i;
7

8
  EEAdr_max = ee_init();
9

10
  for (EEAdr_i=0; EEAdr_i < EEAdr_max; EEAdr_i++)
11
  {
12
    lesen_1byte(EEAdr_i);
13
  }  
14
}
15

16
void lesen_1byte(unsigned short EEAdr)
17
{
18
        unsigned short EEAdr_tmp1;
19

20
        EEAdr_tmp1 = EEAdr;
21

22
        ...
23

24
}

Vielen Dank für Eure Hilfe.
#3036022
Lesenswert?

Mario L. schrieb:
> Fabian O. schrieb:
>> Wie stellst Du das fest?
>
> Breakpoint gesetzt und im Watch-Fenster angezeigt.
>
> @ Otto Normaluser
>
> Hast Du auch eine mögliche Antwort zu dem Problem?

Bitte kompletten Code zeigen.
Es kann sein, dass die Speicherstelle, an der die Variable übergeben 
wird, zum Zeitpunkt des Breakpoints anderweitig verwendet wird 
(Codeoptimierung).
Mal den Disassembler einschalten :-)

Gruss, Daniel

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