|
- #define _MAIN_C_
- //============================
- #include "includeFile.h"
- //============================
- /******************************************************************
- 功能: 初始化
- 輸入: 無
- 輸出: 無
- 版本: V15.10.0
- 作者: 姚工
- 修改日期: 2015-10
- 說明:系統上電之后,先取得系統設置的參數,然后用這些參數來對相應的模塊進行初始化,如下:
- 1. 串口通信的波特率 和 校驗值 [決定本從機的通信參數];
- 2. modbus 從機的站號 ,可以使用撥碼開關來設定站號,或者使用EEPROM存儲站號;
- ******************************************************************/
- void SYSinit(void)
- {
- TimesMsinitInt(); //Ms定時器初始化,用作產生1ms的系統時間基準
- //先寫相應的函數,取得系統參數....
- //以下例程使用固定值:19200 ,無校驗, 站號 =1
- UartInit(19200, NONE_PARITY); //串口初始化[須要確定好波特率和校驗值]
- ModbusInit(1,StartSend); //Modbus串口初始化[須要確定好站號]
- //
- EA = 1;
- }
- //----------------------------START-------------------------------
- //=================================================================
- void main(void)
- {
- SYSinit(); //系統初始化
- while (1)
- {
- UartRxPoll(); //串口數據幀檢查處理
- TEST1();
- //......
- //繼續添加您的應用程序代碼...
- }
- }
復制代碼- #define __APP_C__
- //============================
- #include "includeFile.h"
- #include "ModbusCodeAp.h"
- //============================
- /*********************************************
- 功能: 應用例子 ;
- 這只是一個例子而已,實際應用時就是對各個功能碼的數組(ModbusApi.h中定義)
- 進行讀取或寫入數據就可以與modbus 設備進行數據交換了;
- 數據的具體應用,請自由發揮
- 輸入: 無
- 輸出: 無
- 版本: V15.02.0
- 作者: 大姆指測控 - 姚工, QQ:657874307
- 修改日期: 2015-02-20
- *********************************************/
- void TEST1(void)
- {
- //開關量輸入:02功能碼 ,讀寄存器
- //單片機端口狀態讀取到 SwBuf_IN[x],
- //SwBuf_IN 是8位的寄存器,使用時把SwBuf_IN的8位值拆分出來使用
- SwBuf_IN[0] = ~P1; //P1.0-P1.7接8個開關
- //......
- //--------------------------------------
- //04功能碼 ,讀寄存器
- //實時數據(比如傳感器數據)轉移到 RegBuf_Input[x]
- RegBuf_Input[0] = 800; //800為要傳遞出去的值,相當于數據采集的值...
- RegBuf_Input[1] = 801; //801為要傳遞出去的值,相當于數據采集的值...
- //......
- //--------------------------------------
- //05,15功能碼 ,寫寄存器
- //SwBuf_Output 是8位的寄存器,使用時把SwBuf_Output的8位值拆分出來使用
- if (ModbusAskFlag._0515_Flag == TRUE)
- {
- ModbusAskFlag._0515_Flag = FALSE;
- //SwBuf_Output[x] 狀態輸出到單片機端口
- P0 = ~SwBuf_Output[0]; //P0.0-P0.7接8個LED
- }
- //......
- //--------------------------------------
- //06,16功能碼 ,寫寄存器
- if (ModbusAskFlag._0616_Flag == TRUE)
- {
- ModbusAskFlag._0616_Flag = FALSE;
- //EEPROM_Save_data(_SET_DATA); //保存數據
- }
- }
復制代碼 |
-
-
Modbus rtu_C51_STC8.rar
2023-3-5 09:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.59 MB, 下載次數: 139, 下載積分: 黑幣 -5
51單片機stc8系列modbus-rtu通信程序,本人親測正常
評分
-
查看全部評分
|