找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5254|回复: 6
打印 上一主题 下一主题
收起左侧

串口通过485发送数据接收到的数据不是发出的数据是什么问题

[复制链接]
抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 
跳转到指定楼层
楼主
ID:418482 发表于 2018-11-9 16:39 | 只看该作者 |只看大图 回帖奖励 |阅读模式
6黑币

4851.png (28.54 KB, 下载次数: 70)

4851.png

4852.png (41.86 KB, 下载次数: 61)

4852.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:418482 发表于 2018-11-10 10:52 | 只看该作者

  1. #include <stc12c5a60s2.h>
  2. #include<intrins.h>

  3. sbit RE=P1^1;
  4. sbit DE=P1^0;
  5.                
  6. bit SendFlag;
  7. unsigned int ReData,SenData;

  8. void configuart(unsigned int baud);

  9. /**************************************
  10.             延时程序
  11. **************************************/
  12. void delay10us(unsigned char t)
  13. {
  14.    do{
  15.       _nop_();
  16.           _nop_();
  17.           _nop_();
  18.           _nop_();
  19.           _nop_();
  20.           _nop_();
  21.           _nop_();
  22.           _nop_();
  23.           _nop_();

  24.    }while(--t);
  25. }


  26. void main ()
  27. {
  28.         EA=1;
  29.                 configuart(9600);   
  30.         while(1)
  31.     {
  32.        
  33.           if (SendFlag==1)   
  34.              {   
  35.                DE=1;           //                             
  36.               SBUF=SenData;           //发送数据
  37.                   delay10us(5);
  38.                   //RE=0;
  39.        }
  40.          else
  41.           {

  42.               RE=0;              //接收状态
  43.           }

  44.      }

  45. }
  46. void configuart(unsigned int baud)
  47. {
  48.         //RE=0;
  49.         SCON = 0x50;                                 
  50.             TMOD&=0X0F;
  51.                 TMOD|=0X20;
  52.                 TH1=256-(22118400/12/32)/baud;
  53.                 TL1=TH1;
  54.                
  55.                 ET1=0;
  56.                 ES=1;
  57.                 TR1=1;
  58. }

  59. /****************************************************
  60.                串口中断程序
  61. ******************************************************/
  62. void ser_int (void) interrupt 4
  63. {
  64. if(TI == 1)
  65. {
  66.         TI = 0;
  67.         SendFlag = 0;
  68. }

  69. if(RI == 1)        //RI接受中断标志
  70. {
  71.         RI = 0;                    //清除RI接受中断标志
  72.         ReData = SBUF;  //SUBF接受/发送缓冲器
  73.         SenData=ReData;
  74.         SendFlag = 1;
  75.    
  76. }
  77. }
复制代码

代码是发送什么就接收什么  为什么 串口助手接收的数据不对勒
回复

使用道具 举报

板凳
ID:94031 发表于 2018-11-10 11:31 | 只看该作者
a超人 发表于 2018-11-10 10:52
代码是发送什么就接收什么  为什么 串口助手接收的数据不对勒

设断点查,先看接收对不对。
回复

使用道具 举报

地板
ID:123289 发表于 2018-11-10 17:00 | 只看该作者
如果收发的频率不一致,会发生此现象。
回复

使用道具 举报

5#
ID:422661 发表于 2018-11-17 12:21 | 只看该作者
单片机通过485通信, 属于准双向通讯,在接收时不能发送,上位机与下位机通讯,
一般为 上位机 发送 指令 或者 数据,下位机接收完成后 判断 是指令还是数据,
并返回 执行状态 和 数据。
就是 有接收完成 后 马上 返回数据 给 上位机。即 上位机与下位机的收发协议。
如果 随意发送数据,那肯定会乱套了。
回复

使用道具 举报

6#
ID:428180 发表于 2018-11-17 14:07 | 只看该作者
通过485通信, 属于准双向通讯,在接收时不能发送,上位机与下位机通讯,
一般为 上位机 发送 指令 或者 数据,下位机接收完成后 判断 是指令还是数据,
并返回 执行状态 和 数据。
回复

使用道具 举报

7#
ID:911776 发表于 2021-5-14 09:43 | 只看该作者
后来怎么解决的?我也遇到这个问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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