資源簡介
個人使用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
- 上一篇:稱重儀表數據讀取
- 下一篇:ERP沙盤模擬生產排程完美表
評論
共有 條評論