Forum: Mikrocontroller und Digitale Elektronik Deklarierung von Variablen in C18


von Fritz (Gast)


Lesenswert?

ich habe eine Funktion im Netz gefunden, leider aber ohne alles weitere:

char Command(char befF,uns16 AdrH,uns16 AdrL,char befH )
{
char a;
SPI(0xFF);
SPI(befF);
SPI(AdrH.high8);
SPI(AdrH.low8);
SPI(AdrL.high8);
SPI(AdrL.low8);
SPI(befH);
SPI(0xFF);
return SPI(0xFF);
}


1.die Deklarierung uns16 ist mir unbekannt, da es sich wie es aussieht 
um einen 8bit Wert handelt, würde ich int nehmen oder evtl unsigned 
char.

2. die Variable a ist für die Funktion eigentlich sinnlos oder?

3. wie wird hier AdrH in AdrH.high8 und .low8 umgewandelt?



vielen Dank schon mal
Fritz

von Sven P. (Gast)


Lesenswert?

Fritz schrieb:
> 1.die Deklarierung uns16 ist mir unbekannt, da es sich wie es aussieht
> um einen 8bit Wert handelt, würde ich int nehmen oder evtl unsigned
> char.
Irgendwie spricht die 16 schon für 8 Bit, da haste Recht.
Ich würd mir bis jetzt mal den stdint-Header anschauen und ein uint16_t 
benutzen.


> 2. die Variable a ist für die Funktion eigentlich sinnlos oder?
Ja.

> 3. wie wird hier AdrH in AdrH.high8 und .low8 umgewandelt?
Wenn das C ist, dann muss uns16 ein Strukturtyp sein. low8 und high8 
sind eine Struktur, über die ein 16-Bit-Typ (uint16_t) als Union gelegt 
wird.

von Fritz (Gast)


Lesenswert?

oh sorry, meinte natürlich 16bit, die werden dann ja in 2 x 8 geteilt. 
Deshalb ist wohl ein unsigned int angebracht...

von Sven P. (Gast)


Lesenswert?

Nein, eine Struktur mit Union, sonst haut das mit low8 und high8 nicht 
hin...

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.