1 | #include <msp430x14x.h>
|
2 | #include <signal.h>
|
3 |
|
4 | void SendUSART0c(char);
|
5 | void SendUSART0(char*);
|
6 | void InitUSART(void);
|
7 |
|
8 | static char string1[8];
|
9 |
|
10 | char i;
|
11 | int ch;
|
12 |
|
13 | int main(void)
|
14 | {
|
15 | int ch;
|
16 | P6DIR = 0xff;
|
17 | P6OUT = 0x01 ;
|
18 |
|
19 | InitUSART();
|
20 | for (ch=0;ch<10000;ch++){ch++;}
|
21 |
|
22 |
|
23 |
|
24 | for (;;){
|
25 | P6OUT ^= 0x01; // LED togglen
|
26 | //for (ch=0;ch<20000;ch++){ch++;}
|
27 |
|
28 | SendUSART0("Hallo_Welt!\n\r");
|
29 | //SendUSART0c('P');
|
30 | }
|
31 |
|
32 | }
|
33 |
|
34 | //___________________________________________________________________________________________________________
|
35 | void InitUSART()
|
36 | {
|
37 | WDTCTL = WDTPW + WDTHOLD; // watchdog aus
|
38 | P3SEL = 0x30; // P3.4 und P3.5 als USART0 TXD/RXD
|
39 |
|
40 | ME1 |= UTXE0 + URXE0; // TX- und RX-modul erst mal anschalten
|
41 | UCTL0 |= CHAR; // 8 data bits, 1 stop bit, no parity (8N1)
|
42 | UTCTL0 |= SSEL0; // ACLK als UCLK festlegen
|
43 | UBR00 = 0x03; // 9600 baud aus 32.768 kHz erzeugen
|
44 | UBR10 = 0x00; // siehe application note tabelle 2, seite 10
|
45 | UMCTL0 = 0x4A; // korrektur der division
|
46 | UCTL0 &= ~SWRST; // USART freigeben
|
47 | IE1 |= UTXIE0;//+ UTXIE0; // TX- und RX-interrupts anschalten
|
48 | IFG1 &= ~URXIFG0; // initales interrupt-flag loeschen
|
49 | _EINT();
|
50 | }
|
51 |
|
52 |
|
53 | //___________________________________________________________________________________________________________
|
54 | void SendUSART0c(char c) // ein einzelnes zeichen über die serielle schnittstelle (USART0) senden
|
55 | // FJG: Obacht: x12xx : IFG1 => IFG2 !
|
56 | {
|
57 | TXBUF0 = c;
|
58 | }
|
59 |
|
60 | //___________________________________________________________________________________________________________
|
61 | void SendUSART0(char* str) // einen string über die serielle schnittstelle (USART0) senden
|
62 | {
|
63 | while (*str != 0)
|
64 | {
|
65 | for (ch=0;ch<9000;ch++){ch++;}
|
66 | //while (!(IFG1 & UTXIFG0)); // warten, bis USART0 TX-buffer sendebereit
|
67 | TXBUF0 = *str++;
|
68 | }
|
69 | }
|
70 |
|
71 |
|
72 | //___________________________________________________________________________________________________________
|
73 | // ISRs
|
74 | //#pragma vector=UART0TX_VECTOR
|
75 | interrupt(UART0TX_VECTOR)
|
76 | usart0_tx (void)
|
77 | {
|
78 | /* int ch;
|
79 | if (i < sizeof string1){
|
80 | //TXBUF0 = string1[i++];
|
81 | for (ch=0;ch<20000;ch++){ch++;}
|
82 | }*/
|
83 | }
|