#include #include void SendUSART0c(char); void SendUSART0(char*); void InitUSART(void); static char string1[8]; char i; int ch; int main(void) { int ch; P6DIR = 0xff; P6OUT = 0x01 ; InitUSART(); for (ch=0;ch<10000;ch++){ch++;} for (;;){ P6OUT ^= 0x01; // LED togglen //for (ch=0;ch<20000;ch++){ch++;} SendUSART0("Hallo_Welt!\n\r"); //SendUSART0c('P'); } } //___________________________________________________________________________________________________________ void InitUSART() { WDTCTL = WDTPW + WDTHOLD; // watchdog aus P3SEL = 0x30; // P3.4 und P3.5 als USART0 TXD/RXD ME1 |= UTXE0 + URXE0; // TX- und RX-modul erst mal anschalten UCTL0 |= CHAR; // 8 data bits, 1 stop bit, no parity (8N1) UTCTL0 |= SSEL0; // ACLK als UCLK festlegen UBR00 = 0x03; // 9600 baud aus 32.768 kHz erzeugen UBR10 = 0x00; // siehe application note tabelle 2, seite 10 UMCTL0 = 0x4A; // korrektur der division UCTL0 &= ~SWRST; // USART freigeben IE1 |= UTXIE0;//+ UTXIE0; // TX- und RX-interrupts anschalten IFG1 &= ~URXIFG0; // initales interrupt-flag loeschen _EINT(); } //___________________________________________________________________________________________________________ void SendUSART0c(char c) // ein einzelnes zeichen über die serielle schnittstelle (USART0) senden // FJG: Obacht: x12xx : IFG1 => IFG2 ! { TXBUF0 = c; } //___________________________________________________________________________________________________________ void SendUSART0(char* str) // einen string über die serielle schnittstelle (USART0) senden { while (*str != 0) { for (ch=0;ch<9000;ch++){ch++;} //while (!(IFG1 & UTXIFG0)); // warten, bis USART0 TX-buffer sendebereit TXBUF0 = *str++; } } //___________________________________________________________________________________________________________ // ISRs //#pragma vector=UART0TX_VECTOR interrupt(UART0TX_VECTOR) usart0_tx (void) { /* int ch; if (i < sizeof string1){ //TXBUF0 = string1[i++]; for (ch=0;ch<20000;ch++){ch++;} }*/ }