Hallo zusammen,
auf meiner Suche herauszufinden, wie man Daten per UART von meinem uc
Atmel
AT89C51ED2 an den Pc sendet kam ich bisher zu folgendem:
1 | #include "reg_c51.h"
|
2 | #include <stdio.h> // für sprintf
|
3 | #include <cbsboard.h> // für das CBS-Board Version2
|
4 |
|
5 | #define LEDPort P2 // für P2 LEDPort verwenden
|
6 |
|
7 | const float LSB = 0.01953; // 5V / 256 Schritte = 0.01953
|
8 | char uart_data;
|
9 |
|
10 | void main (void)
|
11 | {
|
12 | unsigned char AIn0Wert; //AD0-Wert als 8-Bit-Variable
|
13 | unsigned char buf [16]; //für LCD-Anzeige
|
14 | float UIn0Wert; //für Skalierung des AD0-Werts auf 0 bis 5V
|
15 | initlcd (); // LCD-Display initialisieren
|
16 | testlcd (); //LCD-Display testen und löschen
|
17 |
|
18 | // UART-Teil, den ich auf der offiziellen Atmel Website gefunden habe
|
19 | SCON = 0x50; /* uart in mode 1 (8 bit), REN=1 */
|
20 | BDRCON &=0xEC; /* BRR=0; SRC=0; */
|
21 | BDRCON |=0x0C; /* TBCK=1;RBCK=1; SPD=0 */
|
22 | BRL=0xFD; /* 9600 Bds at 11.059MHz */
|
23 | ES = 1; /* Enable serial interrupt */
|
24 | EA = 1; /* Enable global interrupt */
|
25 | BDRCON |=0x10; /* Baud rate generator run*/
|
26 |
|
27 | while (1)
|
28 | {
|
29 | AIn0Wert = ain (0); //Analogwert von Poti an Kanal 0 einlesen
|
30 | LEDPort = AIn0Wert; //an LEDs an P2 ausgeben
|
31 | aout (AIn0Wert); //und an den Analogausgang
|
32 |
|
33 | UIn0Wert = AIn0Wert * LSB; //Skalierung auf 0 bis 5V
|
34 |
|
35 | sprintf (buf,"HALLO");
|
36 | printlcd (buf,1);
|
37 | } // Ende Endlosschleife mit while
|
38 |
|
39 | }
|
ist das soweit korrekt? wie schicke ich nun einen String an den rechner?
Gruß
Björn