MSP430串口程序发送单个字符没问题,但发送字符串就成了乱码。求解!

程序功能:接收来自PC机的字符,然后重新发送给PC机-------------------------------------------------------通信格式... 程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1, 9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开串口调试助手,正确设置通信格式,向学习板
发送一个字符,观察是否收到回发的字符,以及是否
正确
*******************************************************/
#include <msp430x14x.h>
typedef unsigned char uchar;
typedef unsigned int uint;

/********************主函数********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

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状态机
IE1 |= URXIE0; // 使能USART0的接收中断

while(1)
{
_EINT(); //打开全局中断
LPM1; //进入LPM1模式
while (!(IFG1 & UTXIFG0)); //等待以前的字符发送完毕
TXBUF0 = RXBUF0; //将收到的字符发送出去
}
}
/*******************************************
函数名称:UART0_RXISR
功 能:UART0的接收中断服务函数,在这里唤醒
CPU,使它退出低功耗模式
参 数:无
返回值 :无
********************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
LPM1_EXIT; //退出低功耗模式
}
展开
 我来答
beatorwin
2012-05-29 · TA获得超过332个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:117万
展开全部
这个问题我碰到过,跟数据的存储方式有关,有些芯片的存储时高字节放在地址低的,低字节放在地址高的,反之也有。之前做了一个通信MSP~C8051,如果传输按8位字节,传输都没错,如果按16位字传输,输出是反的,就是采集到的数据是高8位与低8位互换,换了430~AVR就不用互换,建议你试着交换下数据就行了。
追问
请问,我用的是串口助手跟单片机通信的,那我该怎么改啊?改接收函数吗?麻烦你如果有现成的代码发我看看,我QQ569140448
伟大且鲜明灬小蜜蜂S
2012-07-20
知道答主
回答量:27
采纳率:0%
帮助的人:5万
展开全部
改为
char data;
data=RXBUF0;
TXBUF0=data;
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式