UART Empfangspuffer löschen

OP #4119430
Lesenswert?

Servus,

muss eine Aufgabe lösen

... indem man Zahlen(1 bis 5)empfängt, Eingabe über das Terminal der 
UART(Empfangsregister) verbunden mit einem Atmel µC AT89C51CC03
Man drückt die 1,2,3,4 oder 5 auf dem Terminal und danach soll die 
Funktion(1,2,3,4 oder 5) ausgeführt werden, und das dauerhaft/permanent 
bis man die nächste Zahl eingibt und die dazugehörige Funktion 
ausgeführt wird ...usw....

Mein Problem: wenn ich eine Zahl eingebe springt er in die Funktion und 
danach zurück zum alten wert...wenn ich aber die Taste länger wie 2 sek 
gedrückt halte führt er die Funktion richtig aus.

Kann mir mal ein Profi erklären warum das so ist ?

Hier mein Source:

void fkt_1(void) //Funktion 1 bis 5 sind gleich aufgebaut
{
printf("\nHier ist die Funktion 1!");
}

unsigned char zeichen_empfangen(void)
  {
    unsigned char c = 0;

    if(RHRB) //Empfangsregister des UART-Baustein
    {
    c=RHRB;
    RHRB = 0;
    }
    return c;
    }


void main (void)     // Start des Hauptprogramms
{
    seri_init();                // Schnittstelle initialisieren
    clear_screen();             // Bildschirm löschen

    DUART_B_init();           // Duart Kanal B mit 9600 Baud 
Datenübertragungsrate initialisieren

    while(1)
    {

    flag = zeichen_empfangen();

    switch(flag)
    {
    case 1: fkt_1();break;
    case 2: fkt_2();break;
    case 3: fkt_3();break;
    case 4: fkt_4();break;
    case 5: fkt_5();break;
    }
    }
 }

DANKE schon mal im voraus an euch :-)

Gruss
Chris

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