MSP430F149串口通信,单片机倒序返回数据

2019-07-15 16:48发布

本帖最后由 grainlive 于 2014-11-23 00:08 编辑

刚刚开始接触串口通信这一块……下面是根据例程写的代码#include <msp430f149.h>

unsigned char pre[4];
int i,j;

/********************主函数********************/
void main(void)
{
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;

    WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
    P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换

    P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口
    ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受
    UCTL0 |= CHAR;                            // 选择8位字符
    UTCTL0 |= SSEL0;                          // UCLK = ACLK
    UBR00 = 0x03;                             // 波特率9600
    UBR10 = 0x00;                             //
    UMCTL0 = 0x4A;                            // Modulation
    UCTL0 &= ~SWRST;                          // 初始化UART状态机

    for(i=0;i<4;i++)  //这个地方写的好像不对
    {
      while((IFG1 & URXIFG0)==0);            
      pre=URXIFG0;
    }

    for(j=0;j<4;j++)
    {
        while (!(IFG1 & UTXIFG0));             //等待以前的数据发送完毕
        TXBUF0=pre[3-j];
    }

    while(1);
}
结果不对,比如我发送11 22 33 44,或者1A 2B 3C 4D,收到的都是40 40 40 40


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
mangoal
2019-07-15 17:55
   for(i=0;i<4;i++)  //这个地方写的好像不对
    {
      while((IFG1 & URXIFG0)==0);            
      pre=URXIFG0;
    }
确实不对,改成这样:
   for(i=0;i<4;i++)  //这个地方写的好像不对
    {
      while((IFG1 & URXIFG0)==0);            
      pre[i]=RXBUF0;
    }

一周热门 更多>