MSP430 Embedded Programming Tutorial TUTORIAL

Serial Ports - Echo

In the previous tutorial, we had seen how to send out characters from A to Z. In this tutorial - a character will be sent out from the hyperterminal to the MSP430 at 9600 buad rate ( No Parity and one stop bit) and the MSP430 will echo the character back.

Serial Port Echo Program


void main(void)
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character
  UTCTL0 |= SSEL0;                          // UCLK = ACLK
  UBR00 = 0x03;                             // 32k/9600 - 3.41
  UBR10 = 0x00;                             //
  UMCTL0 = 0x29;                            // Modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0;                            // Enable USART0 RX interrupt

// Mainloop
  for (;;)
  _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3 w/interrupt
  while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
  TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0

// UART0 RX ISR will for exit from LPM3 in Mainloop
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
  _BIC_SR_IRQ(LPM3_bits);                   // Clear LPM3 bits from 0(SR)

Copy paste this code in your IAR embedder system and run the code. Whatever you write on the Hyperterminal in echoed back by the MSP430.

Some light exercise - change the program so that it writes the next letter - for example if you write A - it should echo B.