1 | /*--------------------------------------------------------------------
|
2 | uart.c
|
3 | */
|
4 | #include "uart.h"
|
5 | #include "ADuC7026.h"
|
6 | #define CR 0x0D // CR carriage return
|
7 |
|
8 | static void warteBisSendebereit_uart(void);
|
9 |
|
10 | void init_uart(void) {
|
11 | // Die Pins für die UART aktivieren (Pin 62+61).
|
12 | setBit(GP1CON,0); // Portpins P1.0 und P1.1 für TxD und RxD
|
13 | setBit(GP1CON,4); // anktivieren (SPM0 und SPM1).
|
14 | // Stelle die UART auf 9600bps etc.
|
15 | COMCON0 = 0x080; // Zugang zu COMDIV0+1 Registern
|
16 | COMDIV0 = 0x088; // setze auf 9000 bps
|
17 | COMDIV1 = 0x000;
|
18 | COMCON0 = 0x007; // 8 Datenbits, 2 Stopbits, kein Parity
|
19 | }
|
20 |
|
21 | void sendeText_uart(char *derText) {
|
22 | while(*derText) {
|
23 | sendeZeichen_uart(*derText);
|
24 | derText++;
|
25 | }
|
26 | }
|
27 |
|
28 | int sendeZeichen_uart(const int dasZeichen) {
|
29 | if (dasZeichen == '\n') {
|
30 | warteBisSendebereit_uart();
|
31 | COMTX = CR;
|
32 | }
|
33 | warteBisSendebereit_uart();
|
34 | return (COMTX = dasZeichen);
|
35 | }
|
36 |
|
37 | static void warteBisSendebereit_uart(void) {
|
38 | while(!(0x020==(COMSTA0 & 0x020))){}
|
39 | }
|
40 | /*--------------------------------------------------------------------
|
41 | uart.h
|
42 | */
|
43 | #ifndef UART_H_
|
44 | #define UART_H_
|
45 |
|
46 | /* 450 COMPATIABLE UART CORE REGISTERS */
|
47 | #define UARTBASE (*(volatile unsigned long *) 0XFFFF0700)
|
48 | #define COMTX (*(volatile unsigned long *) 0XFFFF0700)
|
49 | #define COMRX (*(volatile unsigned long *) 0XFFFF0700)
|
50 | #define COMDIV0 (*(volatile unsigned long *) 0XFFFF0700)
|
51 | #define COMIEN0 (*(volatile unsigned long *) 0XFFFF0704)
|
52 | #define COMDIV1 (*(volatile unsigned long *) 0XFFFF0704)
|
53 | #define COMIID0 (*(volatile unsigned long *) 0XFFFF0708)
|
54 | #define COMCON0 (*(volatile unsigned long *) 0XFFFF070C)
|
55 | #define COMCON1 (*(volatile unsigned long *) 0XFFFF0710)
|
56 | #define COMSTA0 (*(volatile unsigned long *) 0XFFFF0714)
|
57 | #define COMSTA1 (*(volatile unsigned long *) 0XFFFF0718)
|
58 | #define COMSCR (*(volatile unsigned long *) 0XFFFF071C)
|
59 | #define COMIEN1 (*(volatile unsigned long *) 0XFFFF0720)
|
60 | #define COMIID1 (*(volatile unsigned long *) 0XFFFF0724)
|
61 | #define COMADR (*(volatile unsigned long *) 0XFFFF0728)
|
62 | #define COMDIV2 (*(volatile unsigned long *) 0XFFFF072C)
|
63 |
|
64 | /* Funktionen */
|
65 | void init_uart(void);
|
66 | void sendeText_uart(char *derText);
|
67 | int sendeZeichen_uart(const int dasZeichen);
|
68 |
|
69 | #endif /*UART_H_*/
|
70 | /*--------------------------------------------------------------------
|
71 | main.c
|
72 | */
|
73 | #include "ADuC7026.h"
|
74 |
|
75 | void main(void) {
|
76 | init_uart();
|
77 | sendeText_uart("abc");
|
78 | }
|