Hallo.. ich möchte seriell an den pc daten senden ich benutze einen AT89C2051 (mit 11,0592MHz) der ist über einen max232 mit dem pc verbunden zum programmieren verwende ich µvision2 von keil (demo version) im ordner exampels habe ich eine datei namens "hello.c" gefunden ich habe #include <AT892051.H> eingefügt, und den wert TH1 ausgerechnet. #include <AT892051.H> #include <stdio.h> /* prototype declarations for I/O functions*/ #ifdef MONITOR51 /* Debugging with Monitor-51 needs */ char code reserve [3] at 0x23;/* space for serial interrupt if*/ #endif /* Stop Exection with Serial Intr. */ /* is enabled */ void main (void) { #ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 208; /* TH1: 1200 baud bei 11,0592MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART*/ #endif while (1) { P1 ^= 0x01; /* Toggle P1.0 each time we print */ printf ("Hello World\n");/* Print "Hello World" */ } } mit diesem programm bekomme ich aber kein zeichen in hyperterminal zu sehen, und P1.0 toggelt auch nicht nur wenn ich das programm mit µvusion simuliere dann toggelt P1.0 andere programme (z.B blinklicht,lauflicht) haben mit der schaltung schon funktioniert. kann mir da jemand weiterhelfen? mfg Roland
du kannst auf jeden fall mal einen serial monitor dazwischenschlaten, der die serielle schnittstelle abhört, dann siehst du schon mal ob überhaupt etwas kommt.
Hast du den MAX richtig am µController und an der seriellen Buchse angeschlossen? Benutzt du das richtige Kabel?
Kenn den µC net hab nen AT89s5282 und da muss man die Interupts freigeben, und dass toggeln eines LCD an P1.0 geht schon, bloss so schnell dass du des net sehen kannst.
Hallo.. ich hab gerade die verbindung vom atmel zum max232 und vom max232 bis zum pc geprüft da müßte alles passen. selbst wenn die verbindung nicht okay sein solte muß dan nicht P1.0 trotzdem toggeln?
Hallo, anstatt TI = 1 zu setzen musst du TI=0; machen. Die putchar() Funktion wartet bis TI == 0 ist und sendet erst dann das Zeichen aus. Ich habe diese Funktion so umgebaut, dass immer zuerst das Zeichen gesendet wird und dann wird solange gewartet, bis das Zeichen den Buffer verlassen hat. Versuchs mal, Gruss Eugen
Hallo Ich hab jetzt noch ne verzögerung eingebaut und zum testen mal die zeile mit printf rausgenommen dann hat P1.0 getoggelt aber sobald ich printf wieder mit rein nehme tut sich am P1.0 nix mehr ich habe TI auch mal auf 0 gestellt hat aber auch nix gebracht. mfg Roland
jetzt habe ich "scon = 0x40" und "TH1=232" eingestellt in hyperterminal saust jetzt der cursor über den bildschirm und zeigt wilde zeichen an zwischen den zeichen sieht man ab an zu Hello World stehen was könnte da noch faul sein?
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.