找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3249|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)stc8系列單片機(jī)modbus-rtu通信程序,本人親測正常

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  1. #define _MAIN_C_
  2. //============================
  3. #include "includeFile.h"
  4. //============================


  5. /******************************************************************
  6. 功能: 初始化
  7. 輸入:        無
  8. 輸出: 無
  9. 版本: V15.10.0
  10. 作者: 姚工
  11. 修改日期: 2015-10
  12. 說明:系統(tǒng)上電之后,先取得系統(tǒng)設(shè)置的參數(shù),然后用這些參數(shù)來對相應(yīng)的模塊進(jìn)行初始化,如下:
  13.                 1. 串口通信的波特率 和 校驗(yàn)值 [決定本從機(jī)的通信參數(shù)];
  14.                 2. modbus 從機(jī)的站號(hào) ,可以使用撥碼開關(guān)來設(shè)定站號(hào),或者使用EEPROM存儲(chǔ)站號(hào);
  15. ******************************************************************/
  16. void SYSinit(void)
  17. {
  18.     TimesMsinitInt();                                        //Ms定時(shí)器初始化,用作產(chǎn)生1ms的系統(tǒng)時(shí)間基準(zhǔn)

  19.     //先寫相應(yīng)的函數(shù),取得系統(tǒng)參數(shù)....
  20.     //以下例程使用固定值:19200 ,無校驗(yàn), 站號(hào) =1
  21.     UartInit(19200, NONE_PARITY);                //串口初始化[須要確定好波特率和校驗(yàn)值]
  22.     ModbusInit(1,StartSend);                         //Modbus串口初始化[須要確定好站號(hào)]
  23.     //
  24.     EA = 1;
  25. }


  26. //----------------------------START-------------------------------
  27. //=================================================================
  28. void main(void)
  29. {
  30.     SYSinit();                                                        //系統(tǒng)初始化
  31.     while (1)
  32.     {
  33.         UartRxPoll();                                   //串口數(shù)據(jù)幀檢查處理
  34.         TEST1();
  35.         //......
  36.         //繼續(xù)添加您的應(yīng)用程序代碼...
  37.     }
  38. }
復(fù)制代碼
  1. #define  __APP_C__
  2. //============================
  3. #include "includeFile.h"
  4. #include "ModbusCodeAp.h"
  5. //============================
  6. /*********************************************
  7. 功能: 應(yīng)用例子 ;
  8.                 這只是一個(gè)例子而已,實(shí)際應(yīng)用時(shí)就是對各個(gè)功能碼的數(shù)組(ModbusApi.h中定義)
  9.                 進(jìn)行讀取或?qū)懭霐?shù)據(jù)就可以與modbus 設(shè)備進(jìn)行數(shù)據(jù)交換了;
  10.                 數(shù)據(jù)的具體應(yīng)用,請自由發(fā)揮

  11. 輸入: 無
  12. 輸出: 無
  13. 版本: V15.02.0
  14. 作者: 大姆指測控 - 姚工,   QQ:657874307
  15. 修改日期: 2015-02-20
  16. *********************************************/

  17. void TEST1(void)
  18. {

  19.     //開關(guān)量輸入:02功能碼 ,讀寄存器
  20.     //單片機(jī)端口狀態(tài)讀取到 SwBuf_IN[x],
  21.     //SwBuf_IN 是8位的寄存器,使用時(shí)把SwBuf_IN的8位值拆分出來使用
  22.     SwBuf_IN[0] = ~P1;  //P1.0-P1.7接8個(gè)開關(guān)
  23.     //......
  24.     //--------------------------------------

  25.     //04功能碼 ,讀寄存器
  26.     //實(shí)時(shí)數(shù)據(jù)(比如傳感器數(shù)據(jù))轉(zhuǎn)移到 RegBuf_Input[x]
  27.     RegBuf_Input[0] = 800;        //800為要傳遞出去的值,相當(dāng)于數(shù)據(jù)采集的值...
  28.     RegBuf_Input[1] = 801;        //801為要傳遞出去的值,相當(dāng)于數(shù)據(jù)采集的值...
  29.     //......
  30.     //--------------------------------------

  31.     //05,15功能碼 ,寫寄存器
  32.     //SwBuf_Output 是8位的寄存器,使用時(shí)把SwBuf_Output的8位值拆分出來使用
  33.     if (ModbusAskFlag._0515_Flag == TRUE)
  34.     {
  35.         ModbusAskFlag._0515_Flag = FALSE;

  36.         //SwBuf_Output[x] 狀態(tài)輸出到單片機(jī)端口
  37.         P0 = ~SwBuf_Output[0];  //P0.0-P0.7接8個(gè)LED

  38.     }
  39.     //......
  40.     //--------------------------------------

  41.     //06,16功能碼 ,寫寄存器
  42.     if (ModbusAskFlag._0616_Flag == TRUE)
  43.     {
  44.         ModbusAskFlag._0616_Flag = FALSE;
  45.         //EEPROM_Save_data(_SET_DATA);                                        //保存數(shù)據(jù)
  46.     }
  47. }
復(fù)制代碼

Modbus rtu_C51_STC8.rar

2.59 MB, 下載次數(shù): 139, 下載積分: 黑幣 -5

51單片機(jī)stc8系列modbus-rtu通信程序,本人親測正常

評(píng)分

參與人數(shù) 2黑幣 +80 收起 理由
略略略我走了 + 30 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:65956 發(fā)表于 2023-3-8 08:49 | 只看該作者
太過于復(fù)雜,移植性才煩索,還是根據(jù)自己寫的能更好理解
回復(fù)

使用道具 舉報(bào)

板凳
ID:562099 發(fā)表于 2023-3-8 21:21 | 只看該作者
一個(gè)通信程序,難到了。好復(fù)雜的
回復(fù)

使用道具 舉報(bào)

地板
ID:462629 發(fā)表于 2023-3-20 11:34 | 只看該作者
這個(gè)可以有,正在找,謝謝了
回復(fù)

使用道具 舉報(bào)

5#
ID:462629 發(fā)表于 2023-3-25 20:59 | 只看該作者
串口屏的演示軟件能共享一下嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:285803 發(fā)表于 2023-4-7 10:29 | 只看該作者
你好! 感謝分享, 程序移植可以使用.  但加添加程序部分. 我加了一個(gè)ADC采集賦值后, 怎么就不能正常通訊了呢 !
回復(fù)

使用道具 舉報(bào)

7#
ID:285803 發(fā)表于 2023-4-7 10:30 | 只看該作者
你好! 程序移植可以正常進(jìn)行 MODBUS RTU 通訊了. 但我加了一個(gè) ADC 采集賦值后 MODBUS 通訊就不行了 ! 有辦法解決嗎?  
回復(fù)

使用道具 舉報(bào)

8#
ID:23844 發(fā)表于 2024-7-19 10:47 | 只看該作者
姚工大姆指寫的程序不錯(cuò)
回復(fù)

使用道具 舉報(bào)

9#
ID:379340 發(fā)表于 2024-11-13 10:44 | 只看該作者
  2. modbus 從機(jī)的站號(hào) ,可以使用撥碼開關(guān)來設(shè)定站號(hào),或者使用EEPROM存儲(chǔ)站號(hào);這個(gè)程序有嗎,發(fā)一下,謝謝想學(xué)習(xí)一下,謝謝
回復(fù)

使用道具 舉報(bào)

10#
ID:961114 發(fā)表于 2024-11-13 11:13 | 只看該作者

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表