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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    串口调试助手里发送的数据和接收的数据不一样!?; K9 r" |7 k0 [* A  t# ?8 C
    我写得串口程序,功能:单片机接收到一个字节数据后,先保存,然后马上发送出去。我是用串口调试助手来做PC端程序来从PC向单片机发送和接收单片机回传数据的。现在的问题是:从串口调试助手里发送的数据和接收的数据不一样,这是什么原因???双方波特率调的可是一致的,下面是程序:
    $ N! v  d& M2 v#include <AT89X51.H>* r/ ?0 z4 N" J5 g
    #include <stdio.h>
    . {6 k$ Y5 G/ @8 j#define UCHAR unsigned CHAR
    : p3 C& R- v0 s3 Z, o" [- [# b: c4 Xvoid main(void)
    ( K$ o5 r; }( P6 n3 f0 ~7 q  Q{ UCHAR data rcvdata[2],trdata[2];; [8 w  [8 i5 D" o
      SCON = 0x50; //串口方式1,允许接收8 M% @/ D7 H3 `" T/ {
      TMOD = 0x20; //定时器1 定时方式2
    0 d: l3 t# P8 m# W1 |  E) J) r. u  TH1 = 0xFD; //11.0592MHZ 9600 波特率
    % t# w8 ], @: ?5 E' `" {% g! l( O5 B  TL1 = 0xFD;6 G) l1 \$ N9 _0 A
      TR1 = 1; //启动定时器$ G" {; N8 g3 s: j
        while(1)
    6 E1 Y1 ~' Q8 P& J7 o  {
    6 e* N  F5 Z5 \/ k) V    if(RI)
    0 i6 B( Z( G7 E* W    {rcvdata[0]=SBUF;  //把接收到的数据保存. [0 e: @) ?# C* U
         RI=0;9 Q# }0 }$ L* }& d7 V, H; n
         SBUF=trdata[0];   //把收到的数据通过串口发送出去& o$ O2 L, G7 i( U" Q+ S: i
         while(TI);# t% X6 l( H( M! a0 a" f% s
         TI=0;
      t- }. X# L& G! w1 G% ~. W  |  I; Q$ p( I    }
    0 }# L; ^4 J/ A# ]. d! [  }( m9 \8 j$ D2 G7 P) N7 d
    }
    + }: A; n( x1 r. i
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-15 13:10 | 只看该作者
    发同样的数据,收到的却不一样5 N3 W3 X7 x3 ~+ k+ v
    我又试了一下,发同样的数据,收到的却不一样。上面的程序,我刚才贴的时候改了一下,有些笔误,应该是:  c4 p$ U- l  i1 Q! Z
    SBUF=rcvdata[0];   //把收到的数据通过串口发送出去
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-6-15 13:16 | 只看该作者
    具体怎么不一样呢?有没有什么规律?
    + m- J' X, R6 |- d换一个调试助手试一试呢?
    0 ]4 `+ q5 _% L& \用中断接收呢?6 [2 j9 q, [7 z

    该用户从未签到

    4#
    发表于 2022-6-15 13:27 | 只看该作者
    先查一下硬件  Q# p, b& u) U" ^$ p9 ?
    1、看看你的晶震是不是11.0592MHZ + j% Z3 f: x; l) K+ C
    2、检查一下两端的模式设置是否相同,通常单片机端为一位启始位,8位数据位,一位停止位。
    - \# _/ I' |0 r3、启动接收进程前清一下接受缓冲区
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    5#
    发表于 2022-6-15 13:28 | 只看该作者
    一次发一个数据的吗??
    $ v  i9 B3 n- |- o7 |% S你的程序好像一次只能发一个数据吧。接受和发送都要选择16进制的吧?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-8 20:43 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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