Forum: Mikrocontroller und Digitale Elektronik STC8A8K64S4A12 UART?


von Philipp Klaus K. (pkk)


Lesenswert?

Guten Abend.

Ich habe eins dieser blauen STC8A8K64S4A12 Development Boards, wie sie 
bis vor kurzem von vielen Händlern auf ebay verfügbar waren 
(http://www.colecovision.eu/mcs51/STC8A8K64S4A12%20Development%20Board.jpeg).

Leider ist es mir bisher nicht gelungen, den UART zu nutzen.

Weder der Beispielcode aus Abschnitt 14.7.3 des Datenblatts, noch 
Beispielcode vom STC89C52RC 
(http://www.colecovision.eu/mcs51/STC89%20DEMO%20BOARD%20Serial.shtml) 
bewirken etwas: Selbst die LED, die an P3.0 und P3.1, den Pins für Rx / 
Tx, liegen zeigen keinerlei Aktivität.
Den Code hatte ich noch an die Taktrate des STC8A8K64S4A12 angepasst, 
und auch noch ausprobiert, S1_S (für die Wahl der UART-pins) explizit 
auf 0 zu initialisieren, das half aber beides auch nicht.

Anderer einfacher Code (LED blinken, 
http://www.colecovision.eu/mcs51/STC8A8K64S4A12%20Development%20Board%20LED.shtml) 
geht dagegen.

von Philipp Klaus K. (pkk)


Lesenswert?

Auch beim IAP15W4K58S4 ist es mir bisher nicht gelungen, den UART zum 
Laufen zu bringen.
1
#include <stdio.h>
2
3
__sfr __at(0x88) TCON;
4
__sfr __at(0x89) TMOD;
5
__sfr __at(0x8b) TL1;
6
__sfr __at(0x8d) TH1;
7
8
__sfr __at(0x98) SCON;
9
__sfr __at(0x99) SBUF;
10
11
int putchar(int c)
12
{
13
  while(!(SCON & 0x02));
14
  SCON &= ~0x02;
15
  SBUF = c;
16
  return (c);
17
}
18
19
void main(void)
20
{
21
  unsigned long int i = 0;
22
23
  // Configure UART for 9600 baud, 8 data bits, 1 stop bit.
24
  TMOD = 0x20;
25
  SCON = 0x40;
26
  TH1 = 256 - 24.0 * 1000 * 1000 / 12 / 32 / 9600 + 0.5;
27
  TCON |= 0x40;
28
  SCON |= 0x02;        // Tell putchar() the UART is ready to send.
29
30
  for(;;)
31
  {
32
    printf("Hello World!\n");
33
    for(i = 0; i < 147456; i++); // Sleep
34
  }
35
}

Auch dort klappt es aber mit Timer und I/O 
(http://www.colecovision.eu/mcs51/STC15W4K56S4%20SCM%20LED.shtml).

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.