Forum: Mikrocontroller und Digitale Elektronik UART Empfangspuffer löschen


von Ch072 K. (chris072)


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

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.