pic与维纶触摸屏的MODBUS程序 c语言这边描述是modbus.h文件
//extern uchar ACC;
extern uchar sendBuf[40],receBuf[16];
extern uchar checkoutError; // ==2 偶校验错
extern uchar receTimeOut;
extern ulint dwTickCount;
uint crc_16(uchar *Array, uint Len);
void beginSend(void); //开始发送
void checkComm0Modbus(void); //检查uart0数据
void readCoil(void); //读线圈状态
void readRegisters(void); //03读保持寄存器
void readInputRegisters(void); //04读取输入寄存器
void forceSingleCoil(void); //05强制单个线圈
void presetSingleRegister(void); //06设置单个寄存器
void presetMultipleRegisters(void);//16设置多个寄存器
void forceMultipleCoils(void); //强制多个线圈
void LightChang(uchar code);
uint getRegisterVal(uint addr,uint *tempData); //取寄存器值 返回0表示成功
void getInputRegisterVal(uint addr,uint *tempData);//读取输入寄存器值 返回0表示成功
uint setRegisterVal(uint addr,uint tempData); //设置寄存器值 返回0表示成功
uint getCoilVal(uint addr,uint *tempData); //取线圈状态 返回0表示成功
uint setCoilVal(uint addr,uint tempData); //设定线圈状态 返回0表示成功
extern uchar sendCount; //发送字节个数
extern uchar receCount; //接收到的字节个数
extern uchar sendPosi; //发送位置
uchar testCoil; //用于测试 位地址1
uint testRegister; //用于测试 字址址16
uchar localAddr = 1; //单片机控制板的地址
uint Logocount=0; //LOgo显示时间计数
uint SysData[16]={0,1,2,3,4,5,6,7,8,9,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};//系统保持寄存器数据存储寄存器
uint AreaPara1_Disp[10]={2000,2000,2000,2000,2000,2000,2000,2000,2000,2000};//区域1-10光量寄存器
uchar Group_View[10]={65,65,65,65,65,65,65,65,65,65}; //查看分组寄存器
uchar Group_Set[10]={65,65,65,65,65,65,65,65,65,65}; //设置分组寄存器65,66,67,68,69,70,71,72,77,78
uint GroupBit_Enable=0x0001; //分组使能位
uchar Group_Now=65; //当前设置分组
uchar Group_Save=65; //当前确认设置分组
uchar Mode_Now; //当前设置模式
uchar Mode_Save; //当前确认设置模式
uchar ModeChange; //PLC控制器件,地址4x-58,控制自动模式和手动模式的设置画面切换
uchar ModeLight_Now; //光量调节模式,0X26,1专家模式或0普通模式
uchar ModeLight_Save; //保存光量调节模式,0X26,1专家模式或0普通模式
uint Switch_Set=0x3ff; //开关设置
uint Switch_View=0x3ff; //开关查看
uint Contrl_Mode; //区域控制模式查看
uint Light_Mode; //区域调光模式查看
//uint ONFF_STATUS=0x3ff; //开关状态
uint Status_Sure=0x00; //状态确认标志寄存器
uint Status1_Sure=0x00; //状态确认标志寄存器
uint LightQul_Now=2000; //光量设置值
uint LightQul_Save; //光量设置保存值
uchar RedPercent_Now=100,BluePercent_Now=100; //红光蓝光百分比设置值0
uchar RedPercent_Save,BluePercent_Save; //红光蓝光百分比保存值
uchar StartHour_Now,StartMin_Now,OverHour_Now,OverMin_Now;//开启时间 时,开启时间 分 关闭时间 时,关闭时间 分
uchar StartHour_Save,StartMin_Save,OverHour_Save,OverMin_Save;//开启时间 时,开启时间 分 关闭时间 时,关闭时间 分
uint LightQulitity_Now=2000,LightQulitity_Save=2000; //在专家模式下,光量值。
//extern struct string Group[10];
//extern struct string Area[10];
extern uchar AreaNumber; //区域个数
uint SySecret; //系统设置密码
uchar SecretStauts=24; //系统密码输入状态
extern uint Rtc_SetHr ,Rtc_SetMin; //在设置实时时钟时操作的时间寄存器
extern uint Rtc_SetDay ,Rtc_SetSec; //在设置实时时钟时操作日寄存器和秒寄存器
extern uint Rtc_SetYear ,Rtc_SeMon; //在设置实时时钟时操作年寄存器和月寄存器
extern uint ONFF_STATUS; //开关状态
extern uchar Control_St;
uchar PLC_Page; //触摸屏页码控制
extern uchar Zigbe_Cnt;
extern uchar Zigbee_Send;
//extern uchar PLC_Page;
extern uchar Zigbe_Cnt;