call by value funktioniert nicht

OP #349056
Lesenswert?

Hallo,

mir gelingt es nicht, eine variable als Übergabeparameter an eine
Funktion zu übergeben, dort kommt immer 0x00 an. Beispielcode folgt:

---------------
main.c
extern void TransmitByte(unsigned char);

main()
{
unsigned char var = 0xDC;

TransmitByte(var);             // Bei der Funktion kommt nur 0x00 an
TransmitByte(0xAA);                 // Hier wird tatsächlich 0xAA
übertragen
}

--------------
serial.c

void TransmitByte(unsigned char);

void TransmitByte(unsigned char zeichen)
{
            /* Funktion sendet zeichen an serielle Schnittstelle */
}

---------------

Ich habe auch schon versucht, var explizit nach NEAR oder FAR zu
verlegen, ohne Erfolg. Ich verwende einen ST10F276 mit einem externen
RAM und den C166 Compiler von Keil. Das Adressfenster für den externen
RAM ist entsprechend konfiguriert.

Danke für Antworten,
Sönke
OP #349060
Lesenswert?

Die Senderoutine funktioniert- im Prinzip. Da war vor dem Sendevorgang
noch eine kleine Verzögerungsschleife untergeracht, und damit bin ich
auch auf den Kern des Problems gestoßen, die Variablen überschreiben
sich gegenseiten. Bei

a = 0x01;
b = 0x02;
printf a;       // kommt 0x02 heraus

Der Zähler in der Warteschleife die Übergabeparameter platt gemacht.
Scheint also ein Problem mit dem Speichermanagement zu sein.

Trotzdem Danke für den Hinweis!

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