找回密码
 注册
关于网站域名变更的通知
查看: 312|回复: 4
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-6-15 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    串口调试助手里发送的数据和接收的数据不一样!?
    ! Y7 ^; a4 H1 l' Z2 z$ @6 D2 ]6 l我写得串口程序,功能:单片机接收到一个字节数据后,先保存,然后马上发送出去。我是用串口调试助手来做PC端程序来从PC向单片机发送和接收单片机回传数据的。现在的问题是:从串口调试助手里发送的数据和接收的数据不一样,这是什么原因???双方波特率调的可是一致的,下面是程序:/ Z" k  m, B/ z( k7 J
    #include <AT89X51.H>" ^, ], G& E$ s! m
    #include <stdio.h>
    3 f: S9 L! Y/ R# y9 x) W. z#define UCHAR unsigned CHAR& n6 j& o# {6 T! ?
    void main(void)
    ! R0 C: {  h$ I/ ]9 _{ UCHAR data rcvdata[2],trdata[2];
    . g$ x; A9 n! E5 F7 x/ _  SCON = 0x50; //串口方式1,允许接收( U. h' p. V# ]
      TMOD = 0x20; //定时器1 定时方式2
    8 C4 |) I0 z* M  TH1 = 0xFD; //11.0592MHZ 9600 波特率: H# Z" t# ~" \' c) @8 u4 j7 ~
      TL1 = 0xFD;
    8 d- f7 q$ e4 o4 L$ @3 z$ J, D  TR1 = 1; //启动定时器9 O7 }$ A! p+ H; H
        while(1)
    . R( \+ f- _$ L7 M  {
    : A$ P( n& ]! ^% Z$ Z' t    if(RI)
    5 R1 `) ?) ?) a7 k5 K, O# b    {rcvdata[0]=SBUF;  //把接收到的数据保存
    ( Z2 {: e3 X9 Q     RI=0;
    1 K( i2 K, k5 B" X* {  V     SBUF=trdata[0];   //把收到的数据通过串口发送出去' P$ q" L* Z, R; g
         while(TI);
    - o/ ^- T/ s) J% n     TI=0;
    ) a' n6 w% P# N: J6 u9 y. S3 l4 T    }. T: P1 ?3 Y2 v# h6 t  b4 R
      }: A. q' s0 f3 R8 Y4 Z0 P
    }
    + x9 V( U2 i! Z, ]5 V: i
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-15 13:10 | 只看该作者
    发同样的数据,收到的却不一样2 F. J# n3 h1 D; w6 Q* T
    我又试了一下,发同样的数据,收到的却不一样。上面的程序,我刚才贴的时候改了一下,有些笔误,应该是:/ I, Q2 C6 a5 J% p
    SBUF=rcvdata[0];   //把收到的数据通过串口发送出去
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-6-15 13:16 | 只看该作者
    具体怎么不一样呢?有没有什么规律?
    / J) X) b+ D. X- i7 B: m5 b换一个调试助手试一试呢?  E8 {8 U  Y* b9 V- I) B
    用中断接收呢?/ A7 ~& m& B  x. r

    该用户从未签到

    4#
    发表于 2022-6-15 13:27 | 只看该作者
    先查一下硬件
    0 t" U0 `1 Y2 i1、看看你的晶震是不是11.0592MHZ
    " @" `3 a; h- `$ n' ]0 \3 S2、检查一下两端的模式设置是否相同,通常单片机端为一位启始位,8位数据位,一位停止位。
    ' Y0 _9 Q7 C2 @3、启动接收进程前清一下接受缓冲区
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    5#
    发表于 2022-6-15 13:28 | 只看该作者
    一次发一个数据的吗??4 b9 Z) {8 R* n: [& D2 h& ?6 Q
    你的程序好像一次只能发一个数据吧。接受和发送都要选择16进制的吧?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-29 04:39 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表