This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

串口RS232通信,总是返回发送值

Other Parts Discussed in Thread: MSP430FG437

我用MSP430FG437做了一个RS232串口通信电路,用官方例程测试,能够收到电脑发给单片机的数据。然后稍微修改了一下程序(如下红色部分),想让单片机通过接收中断返回一个固定的值,发现无论data如何变化,总是返回电脑发送给单片机的数据。接着我将单片机发送数据的指令TXBUF=data取消了,结果还是会返回发给单片机的数据。我用万用电表测了一下,发送跟接收管脚之间没有短路。请问这是什么问题,应该怎么解决呢?

#include  <msp430FG437.h>

unsigned char data = 'a';

void main(void) {  

 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  

FLL_CTL0 |= XCAP18PF;                     // Configure load caps  

 P2SEL |= 0x30;                            // P2.4,5 = USART0 TXD/RXD  

 ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD  

 UCTL0 |= CHAR;                            // 8-bit character  

 UTCTL0 |= SSEL1;                          // UCLK = SMCLK  

 UBR00 = 0x6D;                             // 1MHz 9600  

UBR10 = 0x00;                             //  

 UMCTL0 = 0x03;                            // Modulation  

 UCTL0 &= ~SWRST;                          // Initialize USART state machine

 IE1 |= URXIE0;                            // Enable USART0 RX interrupt  

P2DIR |= 0x10;                            // P2.4 output direction  

_EINT();   _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt

 }

#pragma vector=USART0RX_VECTOR

__interrupt void usart0_rx (void) {

  while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?  

//TXBUF0 = RXBUF0;                         // RXBUF0 to TXBUF0

 TXBUF0 = data;

}