Forum: Mikrocontroller und Digitale Elektronik seriell daten an den pc


von Roland Mayer (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

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.

von ERDI - Soft (Gast)


Lesenswert?

Hast du den MAX richtig am µController und an der seriellen Buchse
angeschlossen? Benutzt du das richtige Kabel?

von Jochen (Gast)


Lesenswert?

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.

von Jochen (Gast)


Lesenswert?

Am SImulator ist das natürlich dann sichtbar.

von Roland Mayer (Gast)


Lesenswert?

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?

von Eugen Mailaender (Gast)


Lesenswert?

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

von Roland Mayer (Gast)


Lesenswert?

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

von Roland Mayer (Gast)


Lesenswert?

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