找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4187|回复: 6
收起左侧

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

[复制链接]
抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 
ID:418482 发表于 2018-11-9 16:39 | 显示全部楼层 |阅读模式
6黑币

4851.png
4852.png
回复

使用道具 举报

ID:418482 发表于 2018-11-10 10:52 | 显示全部楼层
d j.png
  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 | 显示全部楼层
如果收发的频率不一致,会发生此现象。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:911776 发表于 2021-5-14 09:43 | 显示全部楼层
后来怎么解决的?我也遇到这个问题了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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