#include #include void serinit(void) { /* Seriellen Port auf 2400 BAUD @12MHZ setzen */ SCON = 0x52; /* SCON */ TMOD = 0x20; /* TMOD */ TCON = 0x69; /* TCON */ TH1 = 0xf3; /* TH1 */ /* SCON */ SM0=0;SM1=1; /* Modus 1, 8 Bit, Timer 1 */ SM2=0; /* Multi-Controller aus */ REN=1; /* Empfänger einschalten */ TB8=0;RB8=0; /* kein 9-tes Bit */ TI=1; /* PCON */ PCON |= 0x80; /* Division durch 2 */ /* TMOD */ TMOD &= 0x0F; /* T1 auf Modus 2, Reload */ TMOD |= 0x20; TH1 = 0xf3; /* Reload-Wert für 2400 Baud */ /* TCON */ TR1 = 1; /* T1 einschalten */ } bit txs (void) /* SendeStatus */ { /* 1 voriges Zeichen abgesendet */ /* 0 Buffer leer */ return TI; } char putchar (char c) /* Senden */ { while (txs()==0) { } TI=0; SBUF = c; return c; } bit rxs (void) /* EmpfangsStatus */ { return RI; } char _getkey(void) /* Empfang */ { while (rxs()==0) { } RI = 0; return SBUF; } void main(void) { char txchar='a'; char rxchar=' '; serinit(); EA=0; while (1) { /* Senden von Zeichen */ putchar(txchar); txchar++; if (txchar=='z'+1) { printf("12"); txchar='a'; } /* Empfang von Zeichen */ if (rxs()) { rxchar = _getkey(); putchar(rxchar); } } }