test.c


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
}