串口通信单片机接收受到的数据总是比发送的多108(即80h)?比如发送字符a,到单片机中变成e1.怎么回事

MFC程序:用的是Vs2012中的MicrosoftcommunicationControl,6.0版本控件。m_Comm是该控件的一个控制变量。打开端口的代码://如果... MFC程序:用的是Vs2012中的Microsoft communication Control ,6.0版本控件。 m_Comm是该控件的一个控制变量。
打开端口的代码:
//如果串口是打开的,则先关闭串口
if (m_Comm.get_PortOpen())
m_Comm.put_PortOpen(FALSE);
int iPort=3;
m_Comm.put__CommPort(iPort);//选择com1
m_Comm.put_InBufferSize(2048);//接受缓冲区的大小
m_Comm.put_OutBufferSize(2048);//发送缓冲区的大小
m_Comm.put_InputLen(0);//设置当前接收区数据长度为0,即全部接受
m_Comm.put_InputMode(1);//表示以二进制形式接收
m_Comm.put_RThreshold(1);//接收缓冲区有一个及一个以上字符时,将引发接收数据的OnCommMscomm1事件。
m_Comm.put_Settings(_T("9600,n,8,1"));//波特率9600无校验位,8个数据位,1个停止位
//如果串口没有打开则打开。
if (!m_Comm.get_PortOpen())
{
m_Comm.put_PortOpen(TRUE);
MessageBox(L"串口打开成功");
}
else
{
m_Comm.put_OutBufferCount(0);
MessageBox(L"串口打开失败");
}
发送数据的代码:(IDC_EDIT_Send,m_EditSend分别是输入编辑框以及对应值类型String变量)
UpdateData(TRUE);//读取编辑框的数值
COleVariant var=m_EditSend;
m_Comm.put_Output(var);
m_EditSend.Empty();//发送完后清空编辑框
//UpdateData(FALSE);//更新编辑框内容
SetDlgItemText(IDC_EDIT_Send,m_EditSend);
单片机运行的代码(这是厂家附带的,应该不会有问题):

/*主程序*/
void main (void)
{

SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
EA = 1; /*打开总中断*/
ES = 1; /*打开串口中断*/

while (1) /*主循环不做任何动作*/
{
}
}

void UART_SER (void) interrupt 4 //串行中断服务程序
{
unsigned char Temp; //定义临时变量

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
Temp=SBUF; //读入缓冲区的值
P1=Temp; //把值输出到P1口,用于观察
SBUF=Temp; //把接收到的值再发回电脑端
}
if(TI) //如果是发送标志位,清零
TI=0;
}
说错了,应该是接受的实际比发送的多128
展开
 我来答
NJGQZF
2015-04-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:1201万
展开全部
以后记住,串口通信能发能收,就是通信双方波特率不统一。你现在看看吧。
追问
单片机发回来的是正确的,而电脑上发送到单片机上的是错误的啊(通过开发板上的led灯可以看出单片机收发的值)
追答
这真就莫名其妙了,说不通啊。能力所限,看来是帮不了你了。
匿名用户
2015-04-25
展开全部
先不要跟单片机通信。先去下载个虚拟串口调通你的软件,二进制、文本放送接收先理清楚
更多追问追答
追答
请问需要什么硬件?
没有开发板
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-04-22
展开全部
晶振不对
更多追问追答
追问
是波特率不匹配吗?
追答
用的是12M的晶振做的9600的波特率吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式