• 大小: 0.42M
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-03-28
  • 语言: 其他
  • 标签: 其他  

资源简介


个人使用MSP430F149实现的Modbus RTU协议,利用定时器TB来实现计算3.5T的时间间隔,代码完全可用,因为评论无法回复,在压缩包内附有编译无错误和运行时测试例子的截图证明,并附有modbus协议中文参考资料,使用时直接将.h和.c文件包含进工程,修改对应IO和串口即可,使用芯片为MAX3485。

资源截图

代码片段和文件信息

#include 
#include “ModBus.h“
//msp430精确延时函数,注意x取值不要大于291
#define CPU_F ((double)6000000)//MLCK默认800KHZ,改动后要进行相应更改--6MHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

#define MSB_FIRST //大端模式 输出浮点数高位在前

extern unsigned char ucAdress ;//仪表地址
unsigned char RxBuffer[16];
unsigned char TxBuffer[255];
unsigned char RxReceiveFlag = 0;
unsigned char RxLen = 0;
unsigned char TxLen;
unsigned char TimeRxOutFlag = 0; //0--可以接受 1--超时 接收完毕
unsigned int crctempcrcresult;//crc校验码
union
{
  float fReg;
  unsigned int uiReg[2];
  unsigned char ucReg[4];
}HoldReg[14]; //模拟保持寄存器 1~28 14个变量*2 大小与要读取变量数有关

typedef enum
{
  SYS_Idle//空闲状态
  SYS_TxData//发送数据状态
  SYS_RxData//接收数据状态
  SYS_DataHandle //处理数据状态
}SYS_STATE;
SYS_STATE systemstate;
//CRC高低字节校验码表
const unsigned char aucCRCHi[] = {
    0x00 0xC1 0x81 0x40 0x01 0xC0 0x80 0x41 0x01 0xC0 0x80 0x41
    0x

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     232453  2014-01-22 09:23  MODBUSRTU\MODBUS 规约中文说明书.pdf

     文件      16937  2014-03-07 15:31  MODBUSRTU\ModBus.c

     文件       2157  2014-03-07 15:16  MODBUSRTU\ModBus.h

     文件     187689  2014-01-22 11:59  MODBUSRTU\Modbus通信协议接口使用手册.pdf

     文件      24377  2014-03-07 15:33  MODBUSRTU\QQ截图1.png

     文件      38197  2014-03-07 15:34  MODBUSRTU\QQ截图2.png

     目录          0  2014-03-07 15:38  MODBUSRTU

----------- ---------  ---------- -----  ----

               501810                    7


评论

共有 条评论