|
- #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); //保存数据
- }
- }
复制代码 |
评分
-
查看全部评分
|