找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2829|回复: 2
收起左侧

89C52单片机modbus-RTU协议的从机程序,无法写入线圈!找不到问题

[复制链接]
ID:578917 发表于 2019-7-16 17:34 | 显示全部楼层 |阅读模式
程序与上位机通讯能够实现,我用串口调试助手发送 01 05 00 00 00 00 CD CA(站号01,功能码05(写单个位状态),地址:0000,状态0,校验码),单片机从机回复01 05 00 00 00 00 CD CA,经测试,通讯没问题!
再发送 01 01 01 00 00 00 08 3D C6(站号01,功能码01(读位状态),起始地址:0000,寄存器个数:8,校验码)
单片机回复 01 01 01 00 51 88 由此可见位寄存器0----8为0000 0000,并没有被改变。。。

以下为我的单片机定时器T0中断服务程序:

  1. /*T0中断服务程序*/

  2. void comm_stop() interrupt 1
  3. {   
  4.           u8 i;
  5.           TH0=(65536-11111)/256;  //重装T0
  6.     TL0=(65536-11111)%256;  //T0低位

  7.           if(Reciver_bit&&comm_END!=0)          //确认等待3.5个字节时间8ms && 接收位为1
  8.     comm_END--;
  9.           if(comm_END==0)
  10.                 {
  11.                          Reciver_bit=0;                     //帧接收,对标志位清零
  12.                          if(rece_index>=8)                  //确认接收数据长度大于等于8
  13.                         
  14.                                  AnalyzeRecieve();
  15.                                  send_comm();
  16. led0=Bit[0];               
  17. led1=Bit[1];
  18. led2=Bit[2];
  19. led3=Bit[3];
  20. led4=Bit[4];
  21. led5=Bit[5];
  22. led6=Bit[6];
  23. led7=Bit[7];
  24.                                 
  25.                         
  26.                         
  27.              rece_index=0;                      //数据长度标识位清0
  28.                    comm_END=8;                        //重新赋延时初值
  29.        for(i=0;i<16;i++)                  //清空接收数组
  30.        receBuf[i]=0;
  31.         receiveData=0;                     //接收中间变量赋初值[/i]
  32. }
  33. }
复制代码

经过测试发现,程序运行到 AnalyzeRecieve();时,对Bit[0]=1的操作成功,运行下一步时,就好像操作被撤销了一样。
我在开发板上定义了LED0~LED7分别对应Bit[0]~Bit[7]来监控位状态
神奇的是,运行一次T0中断程序,所有LED就都闪一下,修改Bit[]也不成功。
本人知识有限,对这疑难杂陈无计可施。。。
附件包含源程序和现象视频
状态查询.PNG

MODBUS_RTU_SLAVER.rar

2.57 MB, 下载次数: 44

回复

使用道具 举报

ID:578917 发表于 2019-7-16 20:15 来自触屏版 | 显示全部楼层
经测试   是send_comm函数有问题   但是send_comm的功能是正常的呀     为什么会影响到其他数组
回复

使用道具 举报

ID:137005 发表于 2019-8-5 15:23 | 显示全部楼层
能把解决后的代码发一下吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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