*****************************************************************************/
#include "DSP28x_Project.h"// Device Headerfile and Examples Include File
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = &cpu_timer0_Isr;
PieVectTable.SCIRXINTB = &scibRx_Isr; //中断向量表重新赋值(自定义中断函数的入口地址)
// PieVectTable.SCITXINTB = &scibTxFifoIsr; //中断向量表重新赋值
EDIS; // This is needed to disable write to EALLOW protected registers
scib_fifo_init(); // 初始化 SCI-B寄存器配置
// Initialize the Device Peripheral. This function can be
// found in DSP2833x_CpuTimers.c
InitCpuTimers(); // For this example, only initialize the Cpu Timers
#if (CPU_FRQ_150MHZ)
// Configure CPU-Timer 0 interrupt every 5 MS(毫秒):
ConfigCpuTimer(&CpuTimer0, 150, 5000);
#endif
#if (CPU_FRQ_100MHZ)
// Configure CPU-Timer 0, 1, and 2 to interrupt every second:
// 100MHz CPU Freq, 1 second Period (in uSeconds)
ConfigCpuTimer(&CpuTimer0, 100, 1000000);
ConfigCpuTimer(&CpuTimer1, 100, 1000000);
ConfigCpuTimer(&CpuTimer2, 100, 1000000);
#endif
// To ensure precise timing, use write-only instructions to write to the entire register. Therefore, if any
// of the configuration bits are changed in ConfigCpuTimer and InitCpuTimers (in DSP2833x_CpuTimers.h), the
// below settings must also be updated.
// Enable interrupts required for this. example 中断使能
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;// Enable TINT0 in the PIE: Group 1 interrupt 7
PieCtrlRegs.PIEIER9.bit.INTx3=1; // PIE Group 9, INT3 SCIRXINTB SCIB
// PieCtrlRegs.PIEIER9.bit.INTx4=1; // PIE Group 9, INT4 SCITXINTB SCIB
EINT;//开总中断 INTM
// Step 6. IDLE loop. Just sit and loop forever (optional):
while (1)
{
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=PIEACK_GROUP9; // Issue PIE ack
//#pragma CODE_SECTION(GetCoilVal, "MODBUS_CODE")
//取线圈状态
void GetCoilVal(Uint16 Addr,Uint16 *ReadState)
{
switch(Addr & 0xff)
{
case 0:
*ReadState=shared_Coil[0];
break;
case 1:
*ReadState=shared_Coil[1];
break;
case 2:
*ReadState=shared_Coil[2];
break;
case 3:
*ReadState=shared_Coil[3];
break;
case 4:
*ReadState=shared_Coil[4];
break;
case 5:
*ReadState=shared_Coil[5];
break;
case 6:
*ReadState=shared_Coil[6];
break;
case 7:
*ReadState=shared_Coil[7];
break;
case 8:
*ReadState=shared_Coil[8];
break;
case 9:
*ReadState=shared_Coil[9];
break;
case 10:
*ReadState=shared_Coil[10];
break;
case 11:
*ReadState=shared_Coil[11];
break;
case 12:
*ReadState=shared_Coil[12];
break;
case 13:
*ReadState=shared_Coil[13];
break;
case 14:
*ReadState=shared_Coil[14];
break;
case 15:
*ReadState=shared_Coil[15];
break;
case 16:
*ReadState=shared_Coil[16];
break;
case 17:
*ReadState=shared_Coil[17];
break;
case 18:
*ReadState=shared_Coil[18];
break;
case 19:
*ReadState=shared_Coil[19];
break;
case 20:
*ReadState=shared_Coil[20];
break;
case 21:
*ReadState=shared_Coil[21];
break;
case 22:
*ReadState=shared_Coil[22];
break;
case 23:
*ReadState=shared_Coil[23];
break;
case 24:
*ReadState=shared_Coil[24];
break;
case 25:
*ReadState=shared_Coil[25];
break;
case 26:
*ReadState=shared_Coil[26];
break;
case 27:
*ReadState=shared_Coil[27];
break;
case 28:
*ReadState=shared_Coil[28];
break;
case 29:
*ReadState=shared_Coil[29];
break;
case 30:
*ReadState=shared_Coil[30];
break;
case 31:
*ReadState=shared_Coil[31];
break;
/* case 32:
*ReadState=shared_Coil[32];
break;
case 33:
*ReadState=shared_Coil[33];
break;
case 34:
*ReadState=shared_Coil[34];
break;
case 35:
*ReadState=shared_Coil[35];
break;
case 36:
*ReadState=shared_Coil[36];
break;
case 37:
*ReadState=shared_Coil[37];
break;
case 38:
*ReadState=shared_Coil[38];
break;
case 39:
*ReadState=shared_Coil[39];
break;
case 40:
*ReadState=shared_Coil[40];
break;
case 41:
*ReadState=shared_Coil[41];
break;
case 42:
*ReadState=shared_Coil[42];
break;
case 43:
*ReadState=shared_Coil[43];
break;
case 44:
*ReadState=shared_Coil[44];
break;
case 45:
*ReadState=shared_Coil[45];
break;
case 46:
*ReadState=shared_Coil[46];
break;
case 47:
*ReadState=shared_Coil[47];
break;
case 48:
*ReadState=shared_Coil[48];
break;
case 49:
*ReadState=shared_Coil[49];
break;
case 50:
*ReadState=shared_Coil[50];
break;
case 51:
*ReadState=shared_Coil[51];
break;
case 52:
*ReadState=shared_Coil[52];
break;
case 53:
*ReadState=shared_Coil[53];
break;
case 54:
*ReadState=shared_Coil[54];
break;
case 55:
*ReadState=shared_Coil[55];
break;
case 56:
*ReadState=shared_Coil[56];
break;
case 57:
*ReadState=shared_Coil[57];
break;
case 58:
*ReadState=shared_Coil[58];
break;
case 59:
*ReadState=shared_Coil[59];
break;
case 60:
*ReadState=shared_Coil[60];
break;
case 61:
*ReadState=shared_Coil[61];
break;
case 62:
*ReadState=shared_Coil[62];
break;
case 63:
*ReadState=shared_Coil[63];
break;
case 64:
*ReadState=shared_Coil[64];
break;
case 65:
*ReadState=shared_Coil[65];
break;
case 66:
*ReadState=shared_Coil[66];
break;
case 67:
*ReadState=shared_Coil[67];
break;
case 68:
*ReadState=shared_Coil[68];
break;
case 69:
*ReadState=shared_Coil[69];
break;
case 70:
*ReadState=shared_Coil[70];
break;
case 71:
*ReadState=shared_Coil[71];
break;
case 72:
*ReadState=shared_Coil[72];
break;
case 73:
*ReadState=shared_Coil[73];
break;
case 74:
*ReadState=shared_Coil[74];
break;
case 75:
*ReadState=shared_Coil[75];
break;
case 76:
*ReadState=shared_Coil[76];
break;
case 77:
*ReadState=shared_Coil[77];
break;
case 78:
*ReadState=shared_Coil[78];
break;
case 79:
*ReadState=shared_Coil[79];
break;
case 80:
*ReadState=shared_Coil[80];
break;
case 81:
*ReadState=shared_Coil[81];
break;
case 82:
*ReadState=shared_Coil[82];
break;
case 83:
*ReadState=shared_Coil[83];
break;
case 84:
*ReadState=shared_Coil[84];
break;
case 85:
*ReadState=shared_Coil[85];
break;
case 86:
*ReadState=shared_Coil[86];
break;
case 87:
*ReadState=shared_Coil[87];
break;
case 88:
*ReadState=shared_Coil[88];
break;
case 89:
*ReadState=shared_Coil[89];
break;
case 90:
*ReadState=shared_Coil[90];
break;
case 91:
*ReadState=shared_Coil[91];
break;
case 92:
*ReadState=shared_Coil[92];
break;
case 93:
*ReadState=shared_Coil[93];
break;
case 94:
*ReadState=shared_Coil[94];
break;
case 95:
*ReadState=shared_Coil[95];
break;
case 96:
*ReadState=shared_Coil[96];
break;
case 97:
*ReadState=shared_Coil[97];
break;
case 98:
*ReadState=shared_Coil[98];
break;
case 99:
*ReadState=shared_Coil[99];
break;
case 100:
*ReadState=shared_Coil[100];
break;
case 101:
*ReadState=shared_Coil[101];
break;
case 102:
*ReadState=shared_Coil[102];
break;
case 103:
*ReadState=shared_Coil[103];
break;
case 104:
*ReadState=shared_Coil[104];
break;
case 105:
*ReadState=shared_Coil[105];
break;
case 106:
*ReadState=shared_Coil[106];
break;
case 107:
*ReadState=shared_Coil[107];
break;
case 108:
*ReadState=shared_Coil[108];
break;
case 109:
*ReadState=shared_Coil[109];
break;
case 110:
*ReadState=shared_Coil[110];
break;
case 111:
*ReadState=shared_Coil[111];
break;
case 112:
*ReadState=shared_Coil[112];
break;
case 113:
*ReadState=shared_Coil[113];
break;
case 114:
*ReadState=shared_Coil[114];
break;
case 115:
*ReadState=shared_Coil[115];
break;
case 116:
*ReadState=shared_Coil[116];
break;
case 117:
*ReadState=shared_Coil[117];
break;
case 118:
*ReadState=shared_Coil[118];
break;
case 119:
*ReadState=shared_Coil[119];
break;
case 120:
*ReadState=shared_Coil[120];
break;
case 121:
*ReadState=shared_Coil[121];
break;
case 122:
*ReadState=shared_Coil[122];
break;
case 123:
*ReadState=shared_Coil[123];
break;
case 124:
*ReadState=shared_Coil[124];
break;
case 125:
*ReadState=shared_Coil[125];
break;
case 126:
*ReadState=shared_Coil[126];
break;
case 127:
*ReadState=shared_Coil[127];
break;
*/
}
}
//#pragma CODE_SECTION(GetRegisterVal, "MODBUS_CODE")
/*
函数功能:读取多个保持寄存器的16进制内容
参数说明:
Addr ---- 保持寄存器的参考地址
ReadData ---- 读取的内容
*/
void GetRegisterVal(Uint16 Addr,Uint16 *ReadData)
{
switch(Addr & 0x00ff)
{
case 0:
*ReadData=shared_Reg[0];
break;
case 1:
*ReadData=shared_Reg[1];
break;
case 2:
*ReadData=shared_Reg[2];
break;
case 3:
*ReadData=shared_Reg[3];
break;
case 4:
*ReadData=shared_Reg[4];
break;
case 5:
*ReadData=shared_Reg[5];
break;
case 6:
*ReadData=shared_Reg[6];
break;
case 7:
*ReadData=shared_Reg[7];
break;
case 8:
*ReadData=shared_Reg[8];
break;
case 9:
*ReadData=shared_Reg[9];
break;
case 10:
*ReadData=shared_Reg[10];
break;
case 11:
*ReadData=shared_Reg[11];
break;
case 12:
*ReadData=shared_Reg[12];
break;
case 13:
*ReadData=shared_Reg[13];
break;
case 14:
*ReadData=shared_Reg[14];
break;
case 15:
*ReadData=shared_Reg[15];
break;
case 16:
*ReadData=shared_Reg[16];
break;
case 17:
*ReadData=shared_Reg[17];
break;
case 18:
*ReadData=shared_Reg[18];
break;
case 19:
*ReadData=shared_Reg[19];
break;
case 20:
*ReadData=shared_Reg[20];
break;
case 21:
*ReadData=shared_Reg[21];
break;
case 22:
*ReadData=shared_Reg[22];
break;
case 23:
*ReadData=shared_Reg[23];
break;
case 24:
*ReadData=shared_Reg[24];
break;
case 25:
*ReadData=shared_Reg[25];
break;
case 26:
*ReadData=shared_Reg[26];
break;
case 27:
*ReadData=shared_Reg[27];
break;
case 28:
*ReadData=shared_Reg[28];
break;
case 29:
*ReadData=shared_Reg[29];
break;
case 30:
*ReadData=shared_Reg[30];
break;
case 31:
*ReadData=shared_Reg[31];
break;
}
}
//#pragma CODE_SECTION(SetCoilVal, "MODBUS_CODE")
//设定线圈状态
void SetCoilVal(Uint16 Addr,Uint16 SetState)
{
switch(Addr & 0xff)
{
case 0:
shared_Coil[0]=SetState;
break;
case 1:
shared_Coil[1]=SetState;
break;
case 2:
shared_Coil[2]=SetState;
break;
case 3:
shared_Coil[3]=SetState;
break;
case 4:
shared_Coil[4]=SetState;
break;
case 5:
shared_Coil[5]=SetState;
break;
case 6:
shared_Coil[6]=SetState;
break;
case 7:
shared_Coil[7]=SetState;
break;
case 8:
shared_Coil[8]=SetState;
break;
case 9:
shared_Coil[9]=SetState;
break;
case 10:
shared_Coil[10]=SetState;
break;
case 11:
shared_Coil[11]=SetState;
break;
case 12:
shared_Coil[12]=SetState;
break;
case 13:
shared_Coil[13]=SetState;
break;
case 14:
shared_Coil[14]=SetState;
break;
case 15:
shared_Coil[15]=SetState;
break;
case 16:
shared_Coil[16]=SetState;
break;
case 17:
shared_Coil[17]=SetState;
break;
case 18:
shared_Coil[18]=SetState;
break;
case 19:
shared_Coil[19]=SetState;
break;
case 20:
shared_Coil[20]=SetState;
break;
case 21:
shared_Coil[21]=SetState;
break;
case 22:
shared_Coil[22]=SetState;
break;
case 23:
shared_Coil[23]=SetState;
break;
case 24:
shared_Coil[24]=SetState;
break;
case 25:
shared_Coil[25]=SetState;
break;
case 26:
shared_Coil[26]=SetState;
break;
case 27:
shared_Coil[27]=SetState;
break;
case 28:
shared_Coil[28]=SetState;
break;
case 29:
shared_Coil[29]=SetState;
break;
case 30:
shared_Coil[30]=SetState;
break;
case 31:
shared_Coil[31]=SetState;
break;
/* case 32:
shared_Coil[32]=SetState;
break;
case 33:
shared_Coil[33]=SetState;
break;
case 34:
shared_Coil[34]=SetState;
break;
case 35:
shared_Coil[35]=SetState;
break;
case 36:
shared_Coil[36]=SetState;
break;
case 37:
shared_Coil[37]=SetState;
break;
case 38:
shared_Coil[38]=SetState;
break;
case 39:
shared_Coil[39]=SetState;
break;
case 40:
shared_Coil[40]=SetState;
break;
case 41:
shared_Coil[41]=SetState;
break;
case 42:
shared_Coil[42]=SetState;
break;
case 43:
shared_Coil[43]=SetState;
break;
case 44:
shared_Coil[44]=SetState;
break;
case 45:
shared_Coil[45]=SetState;
break;
case 46:
shared_Coil[46]=SetState;
break;
case 47:
shared_Coil[47]=SetState;
break;
case 48:
shared_Coil[48]=SetState;
break;
case 49:
shared_Coil[49]=SetState;
break;
case 50:
shared_Coil[50]=SetState;
break;
case 51:
shared_Coil[51]=SetState;
break;
case 52:
shared_Coil[52]=SetState;
break;
case 53:
shared_Coil[53]=SetState;
break;
case 54:
shared_Coil[54]=SetState;
break;
case 55:
shared_Coil[55]=SetState;
break;
case 56:
shared_Coil[56]=SetState;
break;
case 57:
shared_Coil[57]=SetState;
break;
case 58:
shared_Coil[58]=SetState;
break;
case 59:
shared_Coil[59]=SetState;
break;
case 60:
shared_Coil[60]=SetState;
break;
case 61:
shared_Coil[61]=SetState;
break;
case 62:
shared_Coil[62]=SetState;
break;
case 63:
shared_Coil[63]=SetState;
break;
case 64:
shared_Coil[64]=SetState;
break;
case 65:
shared_Coil[65]=SetState;
break;
case 66:
shared_Coil[66]=SetState;
break;
case 67:
shared_Coil[67]=SetState;
break;
case 68:
shared_Coil[68]=SetState;
break;
case 69:
shared_Coil[69]=SetState;
break;
case 70:
shared_Coil[70]=SetState;
break;
case 71:
shared_Coil[71]=SetState;
break;
case 72:
shared_Coil[72]=SetState;
break;
case 73:
shared_Coil[73]=SetState;
break;
case 74:
shared_Coil[74]=SetState;
break;
case 75:
shared_Coil[75]=SetState;
break;
case 76:
shared_Coil[76]=SetState;
break;
case 77:
shared_Coil[77]=SetState;
break;
case 78:
shared_Coil[78]=SetState;
break;
case 79:
shared_Coil[79]=SetState;
break;
case 80:
shared_Coil[80]=SetState;
break;
case 81:
shared_Coil[81]=SetState;
break;
case 82:
shared_Coil[82]=SetState;
break;
case 83:
shared_Coil[83]=SetState;
break;
case 84:
shared_Coil[84]=SetState;
break;
case 85:
shared_Coil[85]=SetState;
break;
case 86:
shared_Coil[86]=SetState;
break;
case 87:
shared_Coil[87]=SetState;
break;
case 88:
shared_Coil[88]=SetState;
break;
case 89:
shared_Coil[89]=SetState;
break;
case 90:
shared_Coil[90]=SetState;
break;
case 91:
shared_Coil[91]=SetState;
break;
case 92:
shared_Coil[92]=SetState;
break;
case 93:
shared_Coil[93]=SetState;
break;
case 94:
shared_Coil[94]=SetState;
break;
case 95:
shared_Coil[95]=SetState;
break;
case 96:
shared_Coil[96]=SetState;
break;
case 97:
shared_Coil[97]=SetState;
break;
case 98:
shared_Coil[98]=SetState;
break;
case 99:
shared_Coil[99]=SetState;
break;
case 100:
shared_Coil[100]=SetState;
break;
case 101:
shared_Coil[101]=SetState;
break;
case 102:
shared_Coil[102]=SetState;
break;
case 103:
shared_Coil[103]=SetState;
break;
case 104:
shared_Coil[104]=SetState;
break;
case 105:
shared_Coil[105]=SetState;
break;
case 106:
shared_Coil[106]=SetState;
break;
case 107:
shared_Coil[107]=SetState;
break;
case 108:
shared_Coil[108]=SetState;
break;
case 109:
shared_Coil[109]=SetState;
break;
case 110:
shared_Coil[110]=SetState;
break;
case 111:
shared_Coil[111]=SetState;
break;
case 112:
shared_Coil[112]=SetState;
break;
case 113:
shared_Coil[113]=SetState;
break;
case 114:
shared_Coil[114]=SetState;
break;
case 115:
shared_Coil[115]=SetState;
break;
case 116:
shared_Coil[116]=SetState;
break;
case 117:
shared_Coil[117]=SetState;
break;
case 118:
shared_Coil[118]=SetState;
break;
case 119:
shared_Coil[119]=SetState;
break;
case 120:
shared_Coil[120]=SetState;
break;
case 121:
shared_Coil[121]=SetState;
break;
case 122:
shared_Coil[122]=SetState;
break;
case 123:
shared_Coil[123]=SetState;
break;
case 124:
shared_Coil[124]=SetState;
break;
case 125:
shared_Coil[125]=SetState;
break;
case 126:
shared_Coil[126]=SetState;
break;
case 127:
shared_Coil[127]=SetState;
break;*/
}
}
//#pragma CODE_SECTION(SetRegisterVal, "MODBUS_CODE")
//写单个保持寄存器值
void SetRegisterVal(Uint16 addr,Uint16 tempData)
{
switch(addr & 0xff)
{
case 0:
shared_Reg[0]=tempData;
break;
case 1:
shared_Reg[1]=tempData;
break;
case 2:
shared_Reg[2]=tempData;
break;
case 3:
shared_Reg[3]=tempData;
break;
case 4:
shared_Reg[4]=tempData;
break;
case 5:
shared_Reg[5]=tempData;
break;
case 6:
shared_Reg[6]=tempData;
break;
case 7:
shared_Reg[7]=tempData;
break;
case 8:
shared_Reg[8]=tempData;
break;
case 9:
shared_Reg[9]=tempData;
break;
case 10:
shared_Reg[10]=tempData;
break;
case 11:
shared_Reg[11]=tempData;
break;
case 12:
shared_Reg[12]=tempData;
break;
case 13:
shared_Reg[13]=tempData;
break;
case 14:
shared_Reg[14]=tempData;
break;
case 15:
shared_Reg[15]=tempData;
break;
case 16:
shared_Reg[16]=tempData;
break;
case 17:
shared_Reg[17]=tempData;
break;
case 18:
shared_Reg[18]=tempData;
break;
case 19:
shared_Reg[19]=tempData;
break;
case 20:
shared_Reg[20]=tempData;
break;
case 21:
shared_Reg[21]=tempData;
break;
case 22:
shared_Reg[22]=tempData;
break;
case 23:
shared_Reg[23]=tempData;
break;
case 24:
shared_Reg[24]=tempData;
break;
case 25:
shared_Reg[25]=tempData;
break;
case 26:
shared_Reg[26]=tempData;
break;
case 27:
shared_Reg[27]=tempData;
break;
case 28:
shared_Reg[28]=tempData;
break;
case 29:
shared_Reg[29]=tempData;
break;
case 30:
shared_Reg[30]=tempData;
break;
case 31:
shared_Reg[31]=tempData;
break;
}
}