1 | #include <msp430x14x.h>
|
2 | #include <signal.h>
|
3 |
|
4 | void SendUSART0c(char);
|
5 | void InitUSART(void);
|
6 |
|
7 | int main(void)
|
8 | {
|
9 | int ch;
|
10 | P6DIR = 0xff;
|
11 | P6OUT = 0x01 ;
|
12 |
|
13 | InitUSART();
|
14 | for (ch=0;ch<10000;ch++){ch++;}
|
15 | // SendUSART0c('x'); //<--!
|
16 |
|
17 | for (;;){
|
18 | P6OUT ^= 0x01; // LED togglen
|
19 | for (ch=0;ch<10000;ch++){ch++;}
|
20 | }
|
21 |
|
22 | }
|
23 |
|
24 | void InitUSART()
|
25 | {
|
26 | P3SEL = 0x30; // P3.4 und P3.5 als USART0 TXD/RXD
|
27 |
|
28 | ME1 |= UTXE0 + URXE0; // falls gesetzt, USART0 einschalten (TX- und RX-teil)
|
29 | UCTL0 |= CHAR; // 8 data bits, 1 stop bit, no parity (8N1)
|
30 | UTCTL0 |= SSEL1; // SMCLK als UCLK festlegen
|
31 | UBR00 = 0x03; // 9600 baud aus 32.768 kHz erzeugen
|
32 | UBR10 = 0x00; // siehe application note tabelle 2, seite 10
|
33 | UMCTL0 = 0x4A; // korrektur der division
|
34 | UCTL0 &= ~SWRST; // USART freigeben
|
35 | IE1 |= URXIE0 + UTXIE0; // 2 -> TX- und RX-interrupt anschalten
|
36 | IFG1 &= ~UTXIFG0; // initales interrupt-flag loeschen
|
37 | _EINT();
|
38 | }
|
39 |
|
40 |
|
41 | void SendUSART0c(char c) // ein einzelnes zeichen über die serielle schnittstelle (USART0) senden
|
42 | // FJG: Obacht: x12xx : IFG1 => IFG2 !
|
43 | {
|
44 | while (!(IFG1 & UTXIFG0)); // warten, bis USART0 TX-buffer sendebereit
|
45 | TXBUF0 = c;
|
46 | }
|
47 |
|
48 |
|
49 |
|
50 | //#pragma vector=UART0TX_VECTOR
|
51 | interrupt(UART0TX_VECTOR)
|
52 | usart0_tx (void)
|
53 | {
|
54 | return;
|
55 | }
|
56 |
|
57 | //#pragma vector=UART0RX_VECTOR
|
58 | interrupt(UART0RX_VECTOR)
|
59 | usart0_rx (void)
|
60 | {
|
61 | return;
|
62 | }
|