登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

串口调试助手里发送的数据和接收的数据不一样!?

作者:sxpfine 栏目:单片机
串口调试助手里发送的数据和接收的数据不一样!?
我写得串口程序,功能:单片机接收到一个字节数据后,先保存,然后马上发送出去。我是用串口调试助手来做PC端程序来从PC向单片机发送和接收单片机回传数据的。现在的问题是:从串口调试助手里发送的数据和接收的数据不一样,这是什么原因???双方波特率调的可是一致的,下面是程序:
#include <AT89X51.H>
#include <stdio.h>
#define UCHAR unsigned CHAR
void main(void)
{ UCHAR data rcvdata[2],trdata[2];
  SCON = 0x50; //串口方式1,允许接收
  TMOD = 0x20; //定时器1 定时方式2
  TH1 = 0xFD; //11.0592MHZ 9600 波特率
  TL1 = 0xFD;
  TR1 = 1; //启动定时器
    while(1)
  {
    if(RI)
    {rcvdata[0]=SBUF;  //把接收到的数据保存
     RI=0;
     SBUF=trdata[0];   //把收到的数据通过串口发送出去
     while(TI);
     TI=0;
    }
  }
}

2楼: >>参与讨论
sxpfine
发同样的数据,收到的却不一样
我又试了一下,发同样的数据,收到的却不一样。上面的程序,我刚才贴的时候改了一下,有些笔误,应该是:
SBUF=rcvdata[0];   //把收到的数据通过串口发送出去


3楼: >>参与讨论
luof521

while(!TI);

4楼: >>参与讨论
sxpfine
大家快帮帮我把,我是找不出原因了
楼上说得对,这些错误我都改过了。程序就是实现了简单的发送接收实验,可为什么用串口助手调试时,发送的和收到的数据不一样呢?这是为什么?

5楼: >>参与讨论
剑寒情暖
具体怎么不一样呢?有没有什么规律?
换一个调试助手试一试呢?
用中断接收呢?

6楼: >>参与讨论
bald
先查一下硬件
1、看看你的晶震是不是11.0592MHZ
2、检查一下两端的模式设置是否相同,通常单片机端为一位启始位,8位数据位,一位停止位。
3、启动接收进程前清一下接受缓冲区


7楼: >>参与讨论
wyz84557
一次发一个数据的吗??
你的程序好像一次只能发一个数据吧。接受和发送都要选择16进制的吧?

8楼: >>参与讨论
magusneo
是不是rpwt?
我按照你程序在keli环境一块实验板上试了,正常啊

9楼: >>参与讨论
stintair
硬件接的有问题
 
10楼: >>参与讨论
来人
我的问题是,接收的数据和发送的数据很一致,就是相差80H,60H,40H,20H,00H,不知道为什么会是这样的
参与讨论
昵称:
讨论内容:
 
 
相关帖子
PDIUSB12开发,HID枚举
求助:我的系统的复位电路很奇怪
问一个关于结构的问题
程序出错,各位有空的帮帮忙
有人用过ST的开发环境DVP3么,希望交流一下
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号