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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    串口调试助手里发送的数据和接收的数据不一样!?8 `8 E3 F5 G/ F  D9 `! S" ?; w
    我写得串口程序,功能:单片机接收到一个字节数据后,先保存,然后马上发送出去。我是用串口调试助手来做PC端程序来从PC向单片机发送和接收单片机回传数据的。现在的问题是:从串口调试助手里发送的数据和接收的数据不一样,这是什么原因???双方波特率调的可是一致的,下面是程序:
    2 G" y1 j) U& t$ q#include <AT89X51.H>
    0 L. f' i3 D* |( D  J: U5 j/ D#include <stdio.h>' r' n# u5 m8 h+ s" l( n& N" j$ Z
    #define UCHAR unsigned CHAR; B. ?9 a( ~/ t) L* T7 y+ t0 t3 p9 V- L
    void main(void)* D' z# [% A. n
    { UCHAR data rcvdata[2],trdata[2];3 Z7 Y6 u* ^" V+ ?" Q
      SCON = 0x50; //串口方式1,允许接收
    9 |7 K6 ^6 }1 n; X  TMOD = 0x20; //定时器1 定时方式2
    ! b  j: U/ K0 a2 w: F% ]* W3 q) l  TH1 = 0xFD; //11.0592MHZ 9600 波特率
    + d! y. q  K% B& n  TL1 = 0xFD;
    5 A. F+ C) w/ Q' B* ^  TR1 = 1; //启动定时器- I" ?; j. s8 Z& K2 H' q0 y. ^
        while(1)$ G! q( Y# D) v/ P5 D
      {$ m* m3 s) m' l3 q( Y
        if(RI)
    " `7 `  |" k/ X% A' \    {rcvdata[0]=SBUF;  //把接收到的数据保存& L5 g- n  K6 v- _2 Q( O
         RI=0;
    6 h* L" @: [6 @# ^5 b+ v     SBUF=trdata[0];   //把收到的数据通过串口发送出去
    ( H5 x) ~; ~' R9 _( [     while(TI);0 L$ _4 W- g8 H  j5 S
         TI=0;6 {: n: ~& @6 C1 J# W. L5 z( L$ }/ e3 C
        }1 F7 \, R8 _, m5 K7 W
      }
    / C  a: H" `! t}0 `/ u/ H+ ]0 u+ p
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-15 13:10 | 只看该作者
    发同样的数据,收到的却不一样
    ( q3 i- i, ^% |" `; ?% T我又试了一下,发同样的数据,收到的却不一样。上面的程序,我刚才贴的时候改了一下,有些笔误,应该是:0 s+ A, L1 H6 R
    SBUF=rcvdata[0];   //把收到的数据通过串口发送出去
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-6-15 13:16 | 只看该作者
    具体怎么不一样呢?有没有什么规律?
    1 [5 P% a# q) z$ g换一个调试助手试一试呢?
    ' X1 t# i4 m; A1 G5 T' P用中断接收呢?
    6 m; {" ^9 h7 @# ^

    该用户从未签到

    4#
    发表于 2022-6-15 13:27 | 只看该作者
    先查一下硬件
    7 g4 Z+ T$ d1 L+ H, F  ]: P  j1、看看你的晶震是不是11.0592MHZ ! |2 R0 @2 H; x& u/ i! c
    2、检查一下两端的模式设置是否相同,通常单片机端为一位启始位,8位数据位,一位停止位。7 G# U2 e8 J  A1 i7 h! d+ g% l+ i
    3、启动接收进程前清一下接受缓冲区
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    5#
    发表于 2022-6-15 13:28 | 只看该作者
    一次发一个数据的吗??) q, H1 g/ f2 O2 E- ~
    你的程序好像一次只能发一个数据吧。接受和发送都要选择16进制的吧?
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-4 17:53 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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