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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.