2051er Serial Terminal

Gast #338462
Lesenswert?
• ▲
▼
also hab ein Terminalprogramm für den 2051er, Quarz: 11,0592Mhz

Init Code:
void Init_Serial()
{
EA = 0;

TI = 0;        /* clear transmit interrupt */
TR1 = 0;         /* stop timer 1 */
ET1 = 0;         /* disable timer 1 interrupt */
//  PCON |= 0x80;    /* 0x80=SMOD: set serial baudrate TMOD &= ~0xF0; 
/*
clear timer 1 mode bits */
TMOD |= 0x20;    /* put timer 1 into MODE 2 */
TH1 = 0xFD;      // FD°

TR1 = 1;         /* start timer 1 */
EA = 1;           /* Enable Interrupts */

SM0 = 0;
SM1 = 1;          /* serial port MODE 1 */
SM2 = 0;
REN = 1;         /* enable serial receiver*/

TI = 0;        /* clear transmit interrupt */
RI = 0;        /* clear receiver interrupt */

ES = 1;        /* enable serial interrupts */
EA = 1;           /* Enable Interrupts */
}

void Send_Serial(unsigned char value)
{
SBUF = value;
SCON &= 0xFD;    // Byte Zurück Senden
}


void Comm_Serial() interrupt 4
{
if (TI != 0)    /* Received data interrupt */
{
TI = 0;
return;
}

if (RI != 0)    /* Received data interrupt */
{
RI = 0;
Send_Serial( SBUF );
}

SCON &= 0xFC;          // Clear S0 of IRF
}


So kann mir jedmand erklären warum das ding nicht Sauber das
zurückschickt was es empfängt???

0xFD sollte doch für 11,059 passen ...
Gast #338463
Lesenswert?
• ▲
▼
"0xFD sollte doch für 11,059 passen ..."

Weiß ich nicht, warum läßt Du das nicht den Compiler ausrechnen ?

TH1 = -(unsigned char)(XTAL  BAUD  12 / 16 + 0.5);


Das SCON hat in den Interrupts nichts zu suchen, das wird nur einmal
beim Init gesetzt und dann in Ruhe gelassen.

Ich nehme mal an, die UART spielt verrückt, wenn man ihr mitten im
Senden oder Empfangen die Modi durcheinander bringt.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.