Hallo Ich habe folgendes Problem: Ich möchte ein Programm für den Atmega8 schreiben welches über die RS232 Schnittstelle mit dem PC kommuniziert. Dabei möchte ich das Programm solange anhalten bis eine beliebige Taste am Computer gedrückt wird. Dazu deaktiviere ich alle interrupts und warte dann auf den Tastendruck. Welche routine muss ich dafür verwenden? Habe probleme mit scanf() da bei einem Tastendruck gleich mehrere scanf() (bei welchen das Programm wieder stehen sollte) übersprungen werden. Vielen Dank schon im vorraus MfG Hannes Maier
Gast
#878401
interrupt?
Gast
#878412
Hallo, versuch es einmal hiermit: unsigned char c1; ..... ..... c1=getchar(); //getchar() wartet solange, bis eine Taste gedrückt wird. Alternativ (je nach Compiler) heißt die Funktion auch getkey(); Gruß Carlos
Danke für die schnelle antwort ich verwende jetzt getchar(); müsste eigentlich funktinieren kann es aber erst morgen ausprobieren
Gast
#878452
hallo ich würde schreiben while(!kbhit()); dafür brauchst du allerding die conio.h
Gast
#878483
>while(!kbhit());
Da braucht man dann die berühmte Any-Key-Taste ... ;-)
Zumindest in älteren C-Versionen war es sinnvoll, anschließend den
Tastaturbuffer zu leeren.
danke wie cleare ich den buffer vom usart am besten? mir wäre schon geholfen wenn mir wer erklären könnte wie ich auf das RXC register im codevision zugreifen kann RXC wird nämlich nicht erkannt
Gast
#878581
Versuchs mal mit UDR. MW
RXC ist nur ein Flag (Receive Complete) das im Register UCSRA liegt (Bit 7). Das wird imho automatisch gelöscht, wenn du den Receive-Buffer ausliest (UDR)
void USART_Flush(void)
{
unsigned char dummy;
while(UCSRA & 0x80) dummy=UDR;
}
müsste doch funktionieren oder?
Gast
#878651
Bei c1=getchar(); brauchtst Du Dich um das Leeren des Buffers gar nicht zu kümmern, das wird ja automatisch gemacht, da der Wert in c1 abgelegt wird. Das ist nun mal am einfachsten. Carlos.
super danke eine frage hätte ich aber noch: Wie kann ich auf den eeprom speicher schreiben und lesen?
Gast
#878704
> eine frage hätte ich aber noch: > Wie kann ich auf den eeprom speicher schreiben und lesen? Das steht in der Hilfe. Gruß Sven
Gast
#878951
fflush (stdin) dann scanf bzw. getchar() oder alternativ: cin.get;
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.