?? modbusreg.c
字號:
#include "Global.h"
#include "ModbusReg.h"
//#include "Flash.h" // 采樣設置
#include "Measure.h" // 測量值
//#include "DS1302.h" //時鐘
//#include "USART1.h"
/*// Modbus寄存器操作錯誤代碼
#define ERR_OK (0)
#define ERR_ILLEGAL_FUNCTION (1)
#define ERR_ILLEGAL_DATA_ADDRESS (2)
#define ERR_ILLEGAL_DATA_VALUE (3)
#define ERR_SLAVE_DEVICE_FAILURE (4)
#define ERR_ACKNOWLEDGE (5)
#define ERR_SLAVE_DEVICE_BUSY (6)
#define ERR_MEMORY_PARITY_ERROR (8)*/
// 對指定的Modbus寄存器讀操作
_EXTERN unsigned int Modbus_RegsiterRead(_IN unsigned int RegisterAddress, _OUT unsigned int * RegisterData)
{
unsigned int Flg_Status = ERR_OK; // 操作狀態
unsigned int Tmp_Data; // 存放有存儲器讀取來的數據, 然后在通過RegisterData指針傳出
// 數據讀出
switch(RegisterAddress)
{
// 從RAM, ROM, EEPROM存儲器讀取數據
case MODBUS_SLAVER_STYLE : Tmp_Data = 0x0071; break;
// 數據用(有效數據)
case MODBUS_TEMPERATURE : Tmp_Data = Temperature; break;
case MODBUS_HUMIDITY : Tmp_Data = Humidity; break;
case MODBUS_Dewpiont : Tmp_Data = Dewpiont; break;
case MODBUS_LIGHT_INTENSITY : Tmp_Data = LightIntensity; break;
// 其他非讀/不存在的寄存器地址
default:
Tmp_Data = 0xffff;
//Flg_Status = ERR_ILLEGAL_DATA_ADDRESS; // 寄存器地址非法
break;
}
// 數據返回(如果讀取過程中沒有發生錯誤, 則返回數據)
if (Flg_Status == ERR_OK) *RegisterData = Tmp_Data;
return Flg_Status;
}
/***********************
// 對指定的Modbus寄存器寫操作
_EXTERN unsigned int Modbus_RegsiterWrite(_IN unsigned int RegisterAddress, _IN unsigned int RegisterData)
{
unsigned int Flg_Status = ERR_OK; // 操作狀態
// 數據寫入
switch(RegisterAddress)
{
// 向RAM, ROM, EEPROM存儲器寫入數據
case MODBUS_SLAVER_STYLE : Flash_WriteWord(FLASH_SLAVER_STYLE, RegisterData); break;
// 寄存器地址非法
default:
Flg_Status = ERR_ILLEGAL_DATA_ADDRESS;
break;
}
// 數據返回
return Flg_Status;
}
***********************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -