//******************************************************************************
//调试成功,自发自收,发0x55,波特率1200bps,格式为:起始位+d0+d1+d2+d3+d4+d5+d6+d7 共8位
// Baud rate divider with 32768Hz = 32768Hz/1200 = ~27.31 32768/1200=27.31
// ACLK =32768HZ
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P3.4/UCA0TXD|------------>
// | | 1200 - 8N1
// | P3.5/UCA0RXD|<------------
//
//******************************************************************************
#include "msp430x14x.h"
void main(void)
{ unsigned char revbuf;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UTCTL0 |= SSEL0; // ACLK
UBR00 = 0x1b; // 32768Hz 1200; (27.31)decimal = 1bh
UBR10 = 0; // 32768Hz 1200
UMCTL0 = 0x03; // Modulation UCBRSx = 1
U0CTL |=CHAR+PENA+SPB; //发送字节
U0ME |= UTXE0+URXE0;
U0CTL &= ~SWRST; // **Initialize USCI state machine**
IE1 |= URXIE0; // Enable USCI_A0 RX interrupt
U0TXBUF =0x55;
while(1)
{
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
revbuf=U0RXBUF;
revbuf=U0RXBUF;
}
}
void delay(unsigned char t) //150 us
{
unsigned char i,j;
for(i=0;i<t;i++)
for(j=0;j<30;j++){;}
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USART0RX_VECTOR
__interrupt void USART0RX_ISR(void)
{
while (!(IFG1&UTXIFG0)); // USCI_A0 TX buffer ready?
U0TXBUF = U0RXBUF; // TX -> RXed character
delay(80);
}