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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    串口调试助手里发送的数据和接收的数据不一样!?& B0 E: C% N7 g3 s1 O$ D$ I
    我写得串口程序,功能:单片机接收到一个字节数据后,先保存,然后马上发送出去。我是用串口调试助手来做PC端程序来从PC向单片机发送和接收单片机回传数据的。现在的问题是:从串口调试助手里发送的数据和接收的数据不一样,这是什么原因???双方波特率调的可是一致的,下面是程序:1 z0 E% X+ ~4 A2 X( r5 v9 c& W. d
    #include <AT89X51.H>7 I, C* ?* J1 h% i; M
    #include <stdio.h>
    % J4 {6 r+ K- t6 a; `2 P7 i#define UCHAR unsigned CHAR
    . i* S% Z4 }6 z& q1 [void main(void)0 C; `+ f! L* n; j0 S1 ?  t1 J" t+ o
    { UCHAR data rcvdata[2],trdata[2];$ z( r' W; q2 M$ q$ @
      SCON = 0x50; //串口方式1,允许接收0 `7 H" B' K- e, I- d9 S, A+ _/ Z
      TMOD = 0x20; //定时器1 定时方式23 I! J4 P4 r' M8 r7 z& d
      TH1 = 0xFD; //11.0592MHZ 9600 波特率
    1 X2 ~% u- x( e3 G) I  TL1 = 0xFD;+ I1 b, P; }, [- ^- g6 l1 e
      TR1 = 1; //启动定时器8 {1 D+ P, A+ z+ p' w) A
        while(1)! p" t+ l0 L; W7 m
      {, m! Z* K0 }/ D' @/ [4 ~$ o
        if(RI)
    ( R9 m' r1 D% s. u& ^: @    {rcvdata[0]=SBUF;  //把接收到的数据保存
    - Z$ ~! ~6 B) ^0 z0 P* [! ~     RI=0;5 Z. A( G/ t: s, A$ S
         SBUF=trdata[0];   //把收到的数据通过串口发送出去* Y# R  ?/ t4 K3 _* G
         while(TI);
    - I# M- f/ s) a8 V     TI=0;
    + w- D& J4 p/ D" a% w6 U" e3 |    }6 Y% f% `2 K, ~& t9 m1 P
      }$ M9 @! T1 ]  m
    }1 ~3 x; }5 e) x2 L8 C4 t
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-15 13:10 | 只看该作者
    发同样的数据,收到的却不一样
    5 z/ N  ?7 E  Y/ a; f: h7 O6 H我又试了一下,发同样的数据,收到的却不一样。上面的程序,我刚才贴的时候改了一下,有些笔误,应该是:
    ) I8 D8 W* U1 Q! N2 K# e) _! g$ v& aSBUF=rcvdata[0];   //把收到的数据通过串口发送出去
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-6-15 13:16 | 只看该作者
    具体怎么不一样呢?有没有什么规律?( E* }9 y6 s( q+ n8 i5 y+ y4 S) h
    换一个调试助手试一试呢?, m9 h9 [: ]1 j: g! a
    用中断接收呢?
    , K9 K% L3 _/ A9 A$ j

    该用户从未签到

    4#
    发表于 2022-6-15 13:27 | 只看该作者
    先查一下硬件
    1 R: t. W/ F& h1 ^1、看看你的晶震是不是11.0592MHZ . O7 n- T# ^: J9 }( q
    2、检查一下两端的模式设置是否相同,通常单片机端为一位启始位,8位数据位,一位停止位。
    3 v* v  b- E1 W/ l" I7 O) N3、启动接收进程前清一下接受缓冲区
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    5#
    发表于 2022-6-15 13:28 | 只看该作者
    一次发一个数据的吗??$ B0 W& A( c, y8 ]# Q# F
    你的程序好像一次只能发一个数据吧。接受和发送都要选择16进制的吧?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-24 14:47 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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