Hanno schrieb:
> Dann so?
schon ein bischen besser
> unsigned char USART1_RECEIVE()
> {
> BUFFER = 0xFF;
warum willst du da BUFFER etwas zuweisen? Und vor allen Dingen: warum
0xFF;
Du hast doch noch gar kein Zeichen, welches du im Buffer speichern
könntest.
Ausserdem ist BUFFER ein Array. D.h. es besteht (bei dir) aus 128
einzelnen Variablen, die alle denselben Namen tragen, nämlich Buffer,
und nur durch den Arrayindex unterschieden werden.
Welche dieser 128 'Variablen' ist denn gemeint, wenn du einfach nur
BUFFER schreibst?
> while( *BUFFER != '\0' )
Das ist zwar im C-Sinne nicht ganz falsch, aber ich bin recht sicher,
dass es nicht das ist was du haben willst. (Soll heissen: syntaktisch
ist das korrekt. Aber laut Duden ist "Das U-Boot frisiert das Mondlicht"
auch korrektes Deutsch. Selbst wenn der Satz keinen Sinn ergibt)
Wieder: BUFFER, das sind 128 Variablen!
Ausserdem: wie kannst du denn prüfen, ob BUFFER (egal welches) den Wert
\0 hat? Einer der 128 BUFFER Variablen wurde ja noch gar nichts
zugewiesen!
> BUFFER=UDR1;
BUFFER ist ein Array!
> {
> while ( !(UCSR1A & (1<<RXC1)) )
> {;}
Öhm.
Diese Schleife hier wartet darauf, dass ein Zeichen an der UART
hereinkommt. D.h. du hast hier die Reihenfolge genau verkehrt rum
Du musst ZUERST darauf warten, dass du ein Zeichen bekommst, und erst
DANN kannst du dir dieses Zeichen aus UDR1 abholen.
> BUFFER++;
BUffer ist ein Array. Das kannst du nicht inkrementieren!