单片机MSPG2553,串口通信,程序如下,为何 是输出乱码?

参看附录A实验板原理图,用跳线将G2553单片机的P1.2与BRXD相连、P1.1与BTXD相连,使单片机G2553的SCI异步串行接口与板载仿真器上串口的收发信号对接,... 参看附录A实验板原理图,用跳线将G2553单片机的P1.2与BRXD相连、P1.1与BTXD相连,使单片机G2553的SCI异步串行接口与板载仿真器上串口的收发信号对接,见图94,注意不要接错了,否则无法通信成功。设置波特率9600bps、无校验、8位数据、先低后高、1个停止位,采用查询方式控制单片机串口的接收和发送,用下面方式分别编程,实现接收PC机的串口发送来的字符串,字符串以字符@结尾,单片机将接收到的字符串保存在RAM中,收到字符@后,将接收到的字符串再发给PC机。PC机侧用串口助手程序接收并显示收到的字符串。
1) 串口时钟选用SMCLK=1.0MHz
#include "io430.h"
unsigned char string[];

int main( void )
{ // Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;

BCSCTL2&=~SELS;//SMCLK选择DCO时钟源
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;//DCO设置1Mhz

//USCI_A0波特率时钟源为SMCLK,swrst=1
UCA0CTL1 |= UCSSEL_2+UCRXEIE+UCSWRST;
//置P1.1P1.2为USCI_A0的收/发引脚
P1SEL |= BIT1+BIT2;
P1SEL2 |= BIT1+BIT2;
//设置波特率寄存器
UCA0BR1=0; UCA0BR0=104;

//通信模式、数据格式设置
UCA0CTL0 |= UCMSB;
//设置串口控制
UCA0MCTL=UCBRS_1;
UCA0CTL1 &=~UCSWRST ; //swrst=0 }

for(;;)
{
unsigned int j;
for (j=0;string[j]!='@';j++)
{
while((IFG2&UCA0RXIFG)==0);
string[j]=UCA0RXBUF;
}
unsigned i=j;
for (j=0;j!=i+1;j++)
{
while((IFG2&UCA0TXIFG)==0);
UCA0TXBUF=string[j];
}
}
return 0;
}
展开
 我来答
匿名用户
2015-01-07
展开全部

检查串口线,串口接口等物理连接;

检查波特率等通信参数;

不行就只能断点调试了,看看串口收来的对不对,收来放入缓存的又对不对。

再有就是更换串口助手测试,看看是不是串口助手的原因。


zhxiufan
2014-12-30 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38381
国家科技进步奖

向TA提问 私信TA
展开全部
如果波特率不一致的话,可能会得到乱码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-31
展开全部
你先把串口的波特率设置对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2014-12-30 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4925万
展开全部

原理图有吗

需要给你完成吗

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式