1 | #include <msp430x16x.h>
|
2 |
|
3 | unsigned char answer1[] = "Buchstabe ";
|
4 | unsigned char answer2[] = " gedrueckt\r\n";
|
5 |
|
6 | char i, j;
|
7 |
|
8 | void main(void)
|
9 | {
|
10 | WDTCTL = WDTPW + WDTHOLD; // watchdog aus
|
11 |
|
12 | P3OUT = 0x00; //! - Clear Port
|
13 | P3DIR |= 0x7b; //! - P3.2,7 = input; rest = output
|
14 | P3SEL |= 0xce; //! - P3.0,4,5 = I/O function; rest = SPI & UART
|
15 |
|
16 | P6OUT = 0x00; //! - Clear Port
|
17 | P6DIR |= 0xe0; //! - P6.5,6,7 = output; rest = input
|
18 | P6SEL |= 0x1f; //! - P6.5,6,7 = I/O function; rest = ADC
|
19 |
|
20 |
|
21 | ME2 |= UTXE1 + URXE1; // TX- und RX-modul erst mal anschalten
|
22 | UCTL1 |= CHAR; // 8 data bits, 1 stop bit, no parity (8N1)
|
23 | UTCTL1|= SSEL0; // Clock source = ACLK
|
24 | UBR01 = 0x0d; // 32kHz/2400 = 13.6
|
25 | UBR11 = 0x00; //
|
26 | UMCTL1 = 0x6b; // Modulation
|
27 | UCTL1 &= ~SWRST; // USART freigeben
|
28 | IE2 |= URXIE1 + UTXIE1; // TX- und RX-interrupts anschalten
|
29 |
|
30 |
|
31 | IFG2 &= ~UTXIFG1; // initales interrupt-flag loeschen
|
32 | __bis_SR_register(GIE); //! - general interrupt enable
|
33 |
|
34 | while(1) {
|
35 | while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
|
36 | TXBUF0 = 'X';
|
37 |
|
38 | }
|
39 | // _BIS_SR(LPM3_bits + GIE); // ab in den LPM3 mit interrupts ...
|
40 |
|
41 |
|
42 | }
|
43 |
|
44 | #pragma vector=UART1TX_VECTOR
|
45 | __interrupt void usart1_tx (void)
|
46 | {
|
47 | if (i < sizeof answer1-1) // string schon zu ende?
|
48 | TXBUF1 = answer1[i++]; // string ausgeben
|
49 | else if (i == sizeof answer1-1) // wenn erster string zu ende ...
|
50 | {
|
51 | TXBUF1 = RXBUF1; // ... dann den getippten buchstaben ausgeben
|
52 | i++;
|
53 | }
|
54 | else if (j < sizeof answer2-1) // wenn auch der ausgegeben ist ...
|
55 | TXBUF1 = answer2[j++]; // ... dann den zweiten string ausgeben
|
56 | }
|
57 |
|
58 | #pragma vector=UART1RX_VECTOR
|
59 | __interrupt void usart1_rx (void)
|
60 | {
|
61 | i = 0;
|
62 | j = 0;
|
63 | TXBUF1 = answer1[i++]; // ersten buchstaben von answer1 ausgeben
|
64 | }
|