📄 modbus16.c
字号:
case 62:
nData0Test[62]=SetState;
break;
case 63:
nData0Test[63]=SetState;
break;
case 64:
nData0Test[64]=SetState;
break;
case 65:
nData0Test[65]=SetState;
break;
case 66:
nData0Test[66]=SetState;
break;
case 67:
nData0Test[67]=SetState;
break;
case 68:
nData0Test[68]=SetState;
break;
case 69:
nData0Test[69]=SetState;
break;
case 70:
nData0Test[70]=SetState;
break;
case 71:
nData0Test[71]=SetState;
break;
case 72:
nData0Test[72]=SetState;
break;
case 73:
nData0Test[73]=SetState;
break;
case 74:
nData0Test[74]=SetState;
break;
case 75:
nData0Test[75]=SetState;
break;
case 76:
nData0Test[76]=SetState;
break;
case 77:
nData0Test[77]=SetState;
break;
case 78:
nData0Test[78]=SetState;
break;
case 79:
nData0Test[79]=SetState;
break;
case 80:
nData0Test[80]=SetState;
break;
case 81:
nData0Test[81]=SetState;
break;
case 82:
nData0Test[82]=SetState;
break;
case 83:
nData0Test[83]=SetState;
break;
case 84:
nData0Test[84]=SetState;
break;
case 85:
nData0Test[85]=SetState;
break;
case 86:
nData0Test[86]=SetState;
break;
case 87:
nData0Test[87]=SetState;
break;
case 88:
nData0Test[88]=SetState;
break;
case 89:
nData0Test[89]=SetState;
break;
case 90:
nData0Test[90]=SetState;
break;
case 91:
nData0Test[91]=SetState;
break;
case 92:
nData0Test[92]=SetState;
break;
case 93:
nData0Test[93]=SetState;
break;
case 94:
nData0Test[94]=SetState;
break;
case 95:
nData0Test[95]=SetState;
break;
case 96:
nData0Test[96]=SetState;
break;
case 97:
nData0Test[97]=SetState;
break;
case 98:
nData0Test[98]=SetState;
break;
case 99:
nData0Test[99]=SetState;
break;
case 100:
nData0Test[100]=SetState;
break;
case 101:
nData0Test[101]=SetState;
break;
case 102:
nData0Test[102]=SetState;
break;
case 103:
nData0Test[103]=SetState;
break;
case 104:
nData0Test[104]=SetState;
break;
case 105:
nData0Test[105]=SetState;
break;
case 106:
nData0Test[106]=SetState;
break;
case 107:
nData0Test[107]=SetState;
break;
case 108:
nData0Test[108]=SetState;
break;
case 109:
nData0Test[109]=SetState;
break;
case 110:
nData0Test[110]=SetState;
break;
case 111:
nData0Test[111]=SetState;
break;
case 112:
nData0Test[112]=SetState;
break;
case 113:
nData0Test[113]=SetState;
break;
case 114:
nData0Test[114]=SetState;
break;
case 115:
nData0Test[115]=SetState;
break;
case 116:
nData0Test[116]=SetState;
break;
case 117:
nData0Test[117]=SetState;
break;
case 118:
nData0Test[118]=SetState;
break;
case 119:
nData0Test[119]=SetState;
break;
case 120:
nData0Test[120]=SetState;
break;
case 121:
nData0Test[121]=SetState;
break;
case 122:
nData0Test[122]=SetState;
break;
case 123:
nData0Test[123]=SetState;
break;
case 124:
nData0Test[124]=SetState;
break;
case 125:
nData0Test[125]=SetState;
break;
case 126:
nData0Test[126]=SetState;
break;
case 127:
nData0Test[127]=SetState;
break;*/
}
}
#pragma CODE_SECTION(GetRegisterVal, "MODBUS_CODE")
/*
函数功能:读取多个保持寄存器的16进制内容
参数说明:
Addr ---- 保持寄存器的参考地址
ReadData ---- 读取的内容
*/
void GetRegisterVal(Uint16 Addr,Uint16 *ReadData)
{
switch(Addr & 0x00ff)
{
case 0:
*ReadData=nData4Test[0]++;
break;
case 1:
*ReadData=nData4Test[1]++;
break;
case 2:
*ReadData=nData4Test[2]++;
break;
case 3:
*ReadData=nData4Test[3]++;
break;
case 4:
*ReadData=nData4Test[4]++;
break;
case 5:
*ReadData=nData4Test[5]++;
break;
case 6:
*ReadData=nData4Test[6]++;
break;
case 7:
*ReadData=nData4Test[7]++;
break;
case 8:
*ReadData=nData4Test[8]++;
break;
case 9:
*ReadData=nData4Test[9]++;
break;
case 10:
*ReadData=nData4Test[10]++;
break;
case 11:
*ReadData=nData4Test[11]++;
break;
case 12:
*ReadData=nData4Test[12]++;
break;
case 13:
*ReadData=nData4Test[13]++;
break;
case 14:
*ReadData=nData4Test[14]++;
break;
case 15:
*ReadData=nData4Test[15]++;
break;
case 16:
*ReadData=nData4Test[16]++;
break;
case 17:
*ReadData=nData4Test[17]++;
break;
case 18:
*ReadData=nData4Test[18]++;
break;
case 19:
*ReadData=nData4Test[19];
break;
case 20:
*ReadData=nData4Test[20]++;
break;
case 21:
*ReadData=nData4Test[21]++;
break;
case 22:
*ReadData=nData4Test[22]++;
break;
case 23:
*ReadData=nData4Test[23]++;
break;
case 24:
*ReadData=nData4Test[24]++;
break;
case 25:
*ReadData=nData4Test[25]++;
break;
case 26:
*ReadData=nData4Test[26]++;
break;
case 27:
*ReadData=nData4Test[27]++;
break;
case 28:
*ReadData=nData4Test[28]++;
break;
case 29:
*ReadData=nData4Test[29];
break;
case 30:
*ReadData=nData4Test[30]++;
break;
case 31:
*ReadData=nData4Test[31]++;
break;
}
}
#pragma CODE_SECTION(GetInputRegisterVal, "MODBUS_CODE")
/*
函数功能:读取多个模拟量输入寄存器的16进制内容
参数说明:
Addr ---- 保持寄存器的参考地址
ReadData ---- 读取的内容
*/
void GetInputRegisterVal(Uint16 Addr,Uint16 *ReadData)
{
switch(Addr & 0x00ff)
{
case 0:
*ReadData=nData3Test[0]++;
break;
case 1:
*ReadData=nData3Test[1]++;
break;
case 2:
*ReadData=nData3Test[2]++;
break;
case 3:
*ReadData=nData3Test[3]++;
break;
case 4:
*ReadData=nData3Test[4]++;
break;
case 5:
*ReadData=nData3Test[5]++;
break;
case 6:
*ReadData=nData3Test[6]++;
break;
case 7:
*ReadData=nData3Test[7]++;
break;
case 8:
*ReadData=nData3Test[8]++;
break;
case 9:
*ReadData=nData3Test[9]++;
break;
case 10:
*ReadData=nData3Test[10]++;
break;
case 11:
*ReadData=nData3Test[11]++;
break;
case 12:
*ReadData=nData3Test[12]++;
break;
case 13:
*ReadData=nData3Test[13]++;
break;
case 14:
*ReadData=nData3Test[14]++;
break;
case 15:
*ReadData=nData3Test[15]++;
break;
case 16:
*ReadData=nData3Test[16]++;
break;
case 17:
*ReadData=nData3Test[17]++;
break;
case 18:
*ReadData=nData3Test[18]++;
break;
case 19:
*ReadData=nData3Test[19]++;
break;
case 20:
*ReadData=nData3Test[20]++;
break;
case 21:
*ReadData=nData3Test[21]++;
break;
case 22:
*ReadData=nData3Test[22]++;
break;
case 23:
*ReadData=nData3Test[23]++;
break;
case 24:
*ReadData=nData3Test[24]++;
break;
case 25:
*ReadData=nData3Test[25]++;
break;
case 26:
*ReadData=nData3Test[26]++;
break;
case 27:
*ReadData=nData3Test[27]++;
break;
case 28:
*ReadData=nData3Test[28]++;
break;
case 29:
*ReadData=nData3Test[29]++;
break;
case 30:
*ReadData=nData3Test[30]++;
break;
case 31:
*ReadData=nData3Test[31]++;
break;
}
}
#pragma CODE_SECTION(SetRegisterVal, "MODBUS_CODE")
//设置寄存器值
void SetRegisterVal(Uint16 addr,Uint16 tempData)
{
switch(addr & 0xff)
{
case 0:
nData4Test[0]=tempData;
break;
case 1:
nData4Test[1]=tempData;
break;
case 2:
nData4Test[2]=tempData;
break;
case 3:
nData4Test[3]=tempData;
break;
case 4:
nData4Test[4]=tempData;
break;
case 5:
nData4Test[5]=tempData;
break;
case 6:
nData4Test[6]=tempData;
break;
case 7:
nData4Test[7]=tempData;
break;
case 8:
nData4Test[8]=tempData;
break;
case 9:
nData4Test[9]=tempData;
break;
case 10:
nData4Test[10]=tempData;
break;
case 11:
nData4Test[11]=tempData;
break;
case 12:
nData4Test[12]=tempData;
break;
case 13:
nData4Test[13]=tempData;
break;
case 14:
nData4Test[14]=tempData;
break;
case 15:
nData4Test[15]=tempData;
break;
case 16:
nData4Test[16]=tempData;
break;
case 17:
nData4Test[17]=tempData;
break;
case 18:
nData4Test[18]=tempData;
break;
case 19:
nData4Test[19]=tempData;
break;
case 20:
nData4Test[20]=tempData;
break;
case 21:
nData4Test[21]=tempData;
break;
case 22:
nData4Test[22]=tempData;
break;
case 23:
nData4Test[23]=tempData;
break;
case 24:
nData4Test[24]=tempData;
break;
case 25:
nData4Test[25]=tempData;
break;
case 26:
nData4Test[26]=tempData;
break;
case 27:
nData4Test[27]=tempData;
break;
case 28:
nData4Test[28]=tempData;
break;
case 29:
nData4Test[29]=tempData;
break;
case 30:
nData4Test[30]=tempData;
break;
case 31:
nData4Test[31]=tempData;
break;
}
}
#pragma CODE_SECTION(ModbusExcep, "MODBUS_CODE")
void ModbusExcep(Uint16 FunctionCode,Uint16 ExceptionCode)
{
Uint16 CRCCheck=0;
SdataA[0] = Local;
SdataA[1] = FunctionCode+0x80;
SdataA[2] = ExceptionCode;
CRCCheck = Crc16(SdataA,3);
SdataA[3] = CRCCheck >> 8;
SdataA[4] = CRCCheck & 0xFF;
SdataA_Num = 5;
}
#pragma CODE_SECTION(MarkCompute, "MODBUS_CODE")
Uint16 MarkCompute(Uint16 DataSrc,Uint16 DataAnd,Uint16 DataOr)
{
Uint16 TempData1,TempData2;
TempData1=DataSrc & DataAnd;
TempData2=DataOr & (~DataAnd);
return(TempData1|TempData2);
}
void SciaTx_Response(void)
{
if(SdataA_Num<=16)
SciaRegs.SCIFFTX.bit.TXFFILIL=SdataA_Num;
else if(16<SdataA_Num && SdataA_Num<=80)
SciaRegs.SCIFFTX.bit.TXFFILIL=16;
EDIS; // This is needed to disable write to EALLOW protected registers
PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2
EINT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -