Forum: Mikrocontroller und Digitale Elektronik rückgabe mit return


von Tobias D. (tobias92)


Lesenswert?

was wird hier bei dieser funktion zu wem zurückgegeben?

uint8_t uart_getc(void)
{
    while (!(UCSRA & (1<<RXC)))   // warten bis Zeichen verfuegbar
        ;
    return UDR;                   // Zeichen aus UDR an Aufrufer 
zurueckgeben
}

Tobias

von NurEinGast (Gast)


Lesenswert?

>  was wird hier

Es wird der inhalt des Registers UDR zurückgegeben.

> zu wem zurückgegeben?

Es wird an die aufrufende Funktion zurückgegeben.

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

Tobias Domhöfer schrieb:
> was wird hier bei dieser funktion zu wem zurückgegeben?

du hast hier nur eine Definition deiner Funktion, da sieht man das noch 
nicht. Im Hauptprogramm wirst du dann so etwas wie
1
uint8_t zeichen = uart_getc();
machen, dann hast du nachher in der Variable zeichen den Wert 
gespeichert, da er von der Funktion zurückgegeben wurde.

von ekke (Gast)


Lesenswert?

UDR ist ein Register für die UART-Kommunikation, siehe 
AVR-GCC-Tutorial/Der UART.
UDR hat einen neuen Wert, wenn die Bedingung in der while-Schleife 
erfüllt ist, steht ja auch im Kommentar.
Ob der return-Wert irgendwo ankommt, hängt davon ab, wie uart_getc 
aufgerufen wird.

Ich schlage vor, dass du dir das Tutorial AVR-GCC-Tutorial 
reinziehst. Ich befürchte aber, dass du vorher noch C lernen solltest, 
aber auf einem PC.

von Chris L. (kingkernel)


Lesenswert?

du kannst mit dem Aufruf
1
variable = funktion();

das Ergebnis, welches mit return zurueckgegeben wurde in einer variable 
schrieben!

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.