Atmel T89C51CC01 Ansteuerung des Comport

Gast #65116
Lesenswert?

Hallo Zusammen!

Versuche für ein Schulprojekt einen Atmel T89C51CC01 mit der Software
µ-Vison und Borland C++ zu programieren. Leider bekonnte ich die
Verbindung über den Comportbis jetzt nicht herstellen. Die SIO.H habe
ich bis jetzt so angepasst:

void init(void){
PCON = 0x80;
SCON = 0x52;
TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xed; /* TH1: reload value for 4800 baud (vorher:f4) */
TR1 = 1; /* TR1: timer 1 run */
return;
}

Im Hauptprogramm versuche ich dann mit dem Befehl ->
printf("A"); über den Comport den Buchstaben "A" zu übertragen.
Leider hängt sich der Controller dann immer auf und arbeitet das
restliche nicht mehr ab.

Wo kann es dran liegen???

Bin über jeden Tip Dankbar!!!

freundliche Grüsse
  Bob
Gast #65119
Lesenswert?

Hallo Bob,

hast Du auch den Reloadwert in TL1 eingetragen ?
Stimmt deine Baudrate, sie ist abhängig von der
CPU-Frequenz.

Beispiel:
void init(void){
PCON = 0x80;
SCON = 0x52;
TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xed; /* TH1: reload value for 4800 baud (vorher:f4) */
TL1 = 0xed;
TR1 = 1; /* TR1: timer 1 run */
    .
    .
RI = 0;  // Empfängerinterrupt löschen
TI = 0;  // Sendeinterrupt löschen
ES = 1;  // Serialinterrupt freigeben
EA = 1;  // global interrupt
}

Beim senden:

SBUF = 0x41;     // Zeichen A
while(TI==0);    // Warten bis neues Zeichen gesendet
TI = 0;          // Sendeinterrupt löschen

Gruß,
Arthur

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren