#include "MAIN.h" //***************************************************************************** //数据结构 //***************************************************************************** //每个33993的开关命令状态,由于掉电或者干扰导致33993内部复位时,可以用该状态恢复。 struct StaMc33993CmdSet { unsigned char CmdSetting ; unsigned char CmdInt_Sp ; unsigned int CmdInt_Sg ; unsigned char CmdMetallic_Sp ; unsigned int CmdMetallic_Sg ; unsigned char CmdWetCurr_Sp ; unsigned int CmdWetCurr_Sg ; unsigned char CmdTriState_Sp ; unsigned int CmdTriState_Sg ; unsigned char CmdAnalog ; }; //33993的开关状态,可以采用字节访问,也可以按位访问//XC886不一样,修改 union ByteBitAccess { struct { ubyte SoMc33993Byte1; ubyte SoMc33993Byte0; ubyte SoMc33993Byte3; ubyte SoMc33993Byte2; }ByteData; struct { unsigned int FlgSg0 : 1; unsigned int FlgSg1 : 1; unsigned int FlgSg2 : 1; unsigned int FlgSg3 : 1; unsigned int FlgSg4 : 1; unsigned int FlgSg5 : 1; unsigned int FlgSg6 : 1; unsigned int FlgSg7 : 1; unsigned int FlgSg8 : 1; unsigned int FlgSg9 : 1; unsigned int FlgSg10 : 1; unsigned int FlgSg11 : 1; unsigned int FlgSg12 : 1; unsigned int FlgSg13 : 1; unsigned int FlgSp0 : 1; unsigned int FlgSp1 : 1; unsigned int FlgSp2 : 1; unsigned int FlgSp3 : 1; unsigned int FlgSp4 : 1; unsigned int FlgSp5 : 1; unsigned int FlgSp6 : 1; unsigned int FlgSp7 : 1; unsigned int FlgInt : 1; unsigned int FlgThem : 1; unsigned int : 8; }BitData; }; //33993的开关状态,可以采用字节访问,也可以按位访问 union WordByteBitAccess { uword StaSg; struct { ubyte StaSgH; ubyte StaSgL; }ByteData; struct { unsigned int FlgSg0_FlgSp0 : 1; unsigned int FlgSg1_FlgSp1 : 1; unsigned int FlgSg2_FlgSp2 : 1; unsigned int FlgSg3_FlgSp3 : 1; unsigned int FlgSg4_FlgSp4 : 1; unsigned int FlgSg5_FlgSp5 : 1; unsigned int FlgSg6_FlgSp6 : 1; unsigned int FlgSg7_FlgSp7 : 1; unsigned int FlgSg8 : 1; unsigned int FlgSg9 : 1; unsigned int FlgSg10 : 1; unsigned int FlgSg11 : 1; unsigned int FlgSg12 : 1; unsigned int FlgSg13 : 1; unsigned int : 1; unsigned int : 1; }BitData; }; //***************************************************************************** //全局变量 //***************************************************************************** static struct StaMc33993CmdSet PntSta[2] = {0}; //***************************************************************************** //本文件全局函数声明 //***************************************************************************** bit Mc33993StaRcvOneBit(ubyte NumMc,ubyte Sp0ToSg13); ubyte Mc33993CmdSendOneBit(ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13,bit Status); void InitMc33993Sec(void); void ToggleOneBit(ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13); union ByteBitAccess *Mc33993CmdSend(ubyte NumMc,ubyte CmdBit,ubyte SetBitH,ubyte SetBitL); ////**************************************************************************** //// @Function ubyte Mc33993AnalogChSel(struct StaMc33993CmdSet *PntSta,ubyte NumMc,ubyte Mode,ubyte Channal) //// ////---------------------------------------------------------------------------- //// @Description 模拟通道选择、模式选择 //// ////---------------------------------------------------------------------------- //// @Returnvalue 通道切换成功返回1 //// Mode,高阻,2mA,16mA ////---------------------------------------------------------------------------- //// @Parameters None //// ////---------------------------------------------------------------------------- //// @Date 2008-12-2 //// ////**************************************************************************** //ubyte Mc33993AnalogChSel(ubyte NumMc,ubyte Mode,ubyte Channal) //{ // union WordByteBitAccess RcvSoMc33993; ////---------------------------------------------------------------------------- // if(NumMc > (NumChipSw-1))NumMc = (NumChipSw-1); //多余NumChipSw片 // RcvSoMc33993.ByteData.StaSgL = 0; // RcvSoMc33993.ByteData.StaSgL = (RcvSoMc33993.ByteData.StaSgL | Channal); // switch(Mode) // { // case DF_AN_HIMP: // RcvSoMc33993.BitData.FlgSg6_FlgSp6 = 0;//该两位决定选择哪种模式 // RcvSoMc33993.BitData.FlgSg5_FlgSp5 = 0; // break; // case DF_AN_2MA: // RcvSoMc33993.BitData.FlgSg6_FlgSp6 = 0; // RcvSoMc33993.BitData.FlgSg5_FlgSp5 = 1; // break; // case DF_AN_16MA: // RcvSoMc33993.BitData.FlgSg6_FlgSp6 = 1; // RcvSoMc33993.BitData.FlgSg5_FlgSp5 = 0; // break; // default: // RcvSoMc33993.BitData.FlgSg6_FlgSp6 = 0; // RcvSoMc33993.BitData.FlgSg5_FlgSp5 = 0; // } // Mc33993CmdSend(NumMc,DF_CMDANALOG,RcvSoMc33993.ByteData.StaSgH,RcvSoMc33993.ByteData.StaSgL); // // (*(PntSta+NumMc)).CmdAnalog = RcvSoMc33993.ByteData.StaSgL;//保存命令状态 // // return 1; //} //--------------------------------------------------- //***************************************************************************** //函数 //***************************************************************************** ////**************************************************************************** //// @Function void SwStaSample(UnSwSample *ptmp,ubyte NumSampleChip) //// ////---------------------------------------------------------------------------- //// @Description 采集33993的开关信号。 //// ////---------------------------------------------------------------------------- //// @Returnvalue None //// ////---------------------------------------------------------------------------- //// @Parameters ptmp,存放数据结构体指针,NumSampleChip,33993芯片数量 //// ////---------------------------------------------------------------------------- //// @Date 2008-12-2 //// ////**************************************************************************** void SwStaSample(UnSwSample *ptmp) { union ByteBitAccess *pStaSwIn; uword i,k; //----初始化------------------------------------------------------------------------ InitMc33993Sec();//一个大循环必须调用一次,这样就算12V掉电或33993复位,马上可以恢复。 //初始化用作采集的IO for(i=0;i>0 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP0 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP0 ,Gnd);break; case 1 :if(((((*tmpUn).ArrData.Arr[i][1])>>1 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP1 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP1 ,Gnd);break; case 2 :if(((((*tmpUn).ArrData.Arr[i][1])>>2 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP2 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP2 ,Gnd);break; case 3 :if(((((*tmpUn).ArrData.Arr[i][1])>>3 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP3 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP3 ,Gnd);break; case 4 :if(((((*tmpUn).ArrData.Arr[i][1])>>4 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP4 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP4 ,Gnd);break; case 5 :if(((((*tmpUn).ArrData.Arr[i][1])>>5 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP5 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP5 ,Gnd);break; case 6 :if(((((*tmpUn).ArrData.Arr[i][1])>>6 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP6 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP6 ,Gnd);break; case 7 :if(((((*tmpUn).ArrData.Arr[i][1])>>7 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP7 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP7 ,Gnd);break; case 8 :if(((((*tmpUn).ArrData.Arr[i][0])>>0 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG0 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG0 ,Gnd);break; case 9 :if(((((*tmpUn).ArrData.Arr[i][0])>>1 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG1 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG1 ,Gnd);break; case 10:if(((((*tmpUn).ArrData.Arr[i][0])>>2 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG2 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG2 ,Gnd);break; case 11:if(((((*tmpUn).ArrData.Arr[i][0])>>3 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG3 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG3 ,Gnd);break; case 12:if(((((*tmpUn).ArrData.Arr[i][0])>>4 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG4 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG4 ,Gnd);break; case 13:if(((((*tmpUn).ArrData.Arr[i][0])>>5 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG5 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG5 ,Gnd);break; case 14:if(((((*tmpUn).ArrData.Arr[i][0])>>6 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG6 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG6 ,Gnd);break; case 15:if(((((*tmpUn).ArrData.Arr[i][0])>>7 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG7 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG7 ,Gnd);break; case 16:if(((((*tmpUn).ArrData.Arr[i][3])>>0 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG8 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG8 ,Gnd);break; case 17:if(((((*tmpUn).ArrData.Arr[i][3])>>1 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG9 ,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG9 ,Gnd);break; case 18:if(((((*tmpUn).ArrData.Arr[i][3])>>2 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG10,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG10,Gnd);break; case 19:if(((((*tmpUn).ArrData.Arr[i][3])>>3 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG11,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG11,Gnd);break; case 20:if(((((*tmpUn).ArrData.Arr[i][3])>>4 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG12,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG12,Gnd);break; case 21:if(((((*tmpUn).ArrData.Arr[i][3])>>5 )&0x01) == 1)Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG13,D24V);else Mc33993CmdSendOneBit(i+DF_SwInNum,DF_CMDTRISTATE_SG,DF_FLGSG13,Gnd);break; default:; } } } } //**************************************************************************** // @Function void InitMc33993Sec(struct StaMc33993CmdSet *PntSta) // //---------------------------------------------------------------------------- // @Description 所有MC33993二次初始化,也就是每次操作33993时都用之前的状态初始化 // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters MC33993状态存储结构体指针PntSta // //---------------------------------------------------------------------------- // @Date 2008-12-2 // //**************************************************************************** void InitMc33993Sec(void) { ubyte i; for(i=DF_SwInNum;i>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdInt_Sg)&0x00ff)); //1,关闭中断 Mc33993CmdSend(i,DF_CMDMETALLIC_SP, 0, (*(PntSta+i)).CmdMetallic_Sp); //0,2mA Mc33993CmdSend(i,DF_CMDMETALLIC_SG, (ubyte)((((*(PntSta+i)).CmdMetallic_Sg)>>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdMetallic_Sg)&0x00ff)); //0,2mA Mc33993CmdSend(i,DF_CMDANALOG, 0, (*(PntSta+i)).CmdAnalog); //0,不选择任何通道 Mc33993CmdSend(i,DF_CMDWETCURR_SP, 0, (*(PntSta+i)).CmdWetCurr_Sp); //0,湿电流定时器关闭 Mc33993CmdSend(i,DF_CMDWETCURR_SG, (ubyte)((((*(PntSta+i)).CmdWetCurr_Sg) >>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdWetCurr_Sg)&0x00ff)); //0,湿电流定时器关闭 Mc33993CmdSend(i,DF_CMDTRISTATE_SP, 0, (*(PntSta+i)).CmdTriState_Sp); //0,禁止三态 Mc33993CmdSend(i,DF_CMDTRISTATE_SG, (ubyte)((((*(PntSta+i)).CmdTriState_Sg)>>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdTriState_Sg)&0x00ff)); //0,使能三态 } } //**************************************************************************** // @Function void InitMc33993(struct StaMc33993CmdSet *PntSta) // //---------------------------------------------------------------------------- // @Description 所有MC33993在单片机上电时初始化 // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 2008-12-2 // //**************************************************************************** void InitSW(void) { ubyte i; for(i=0;i (NumChipSw-1))NumMc = (NumChipSw-1); switch(CmdBit) { //DF_CMDTRISTATE_SP case DF_CMDTRISTATE_SP: RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdTriState_Sp; if(Sp0ToSg13 == DF_FLGSP7)RcvSoMc33993.BitData.FlgSg7_FlgSp7 = Status; else if(Sp0ToSg13 == DF_FLGSP6)RcvSoMc33993.BitData.FlgSg6_FlgSp6 = Status; else if(Sp0ToSg13 == DF_FLGSP5)RcvSoMc33993.BitData.FlgSg5_FlgSp5 = Status; else if(Sp0ToSg13 == DF_FLGSP4)RcvSoMc33993.BitData.FlgSg4_FlgSp4 = Status; else if(Sp0ToSg13 == DF_FLGSP3)RcvSoMc33993.BitData.FlgSg3_FlgSp3 = Status; else if(Sp0ToSg13 == DF_FLGSP2)RcvSoMc33993.BitData.FlgSg2_FlgSp2 = Status; else if(Sp0ToSg13 == DF_FLGSP1)RcvSoMc33993.BitData.FlgSg1_FlgSp1 = Status; else if(Sp0ToSg13 == DF_FLGSP0)RcvSoMc33993.BitData.FlgSg0_FlgSp0 = Status; else ; Mc33993CmdSend(NumMc,CmdBit,RcvSoMc33993.ByteData.StaSgH,RcvSoMc33993.ByteData.StaSgL); //(*(PntSta+NumMc)).CmdTriState_Sp = RcvSoMc33993.ByteData.StaSgL; break; //DF_CMDTRISTATE_SG case DF_CMDTRISTATE_SG: RcvSoMc33993.StaSg = (*(PntSta+NumMc)).CmdTriState_Sg; if(Sp0ToSg13 == DF_FLGSG13) RcvSoMc33993.BitData.FlgSg13 = Status; else if(Sp0ToSg13 == DF_FLGSG12) RcvSoMc33993.BitData.FlgSg12 = Status; else if(Sp0ToSg13 == DF_FLGSG11) RcvSoMc33993.BitData.FlgSg11 = Status; else if(Sp0ToSg13 == DF_FLGSG10) RcvSoMc33993.BitData.FlgSg10 = Status; else if(Sp0ToSg13 == DF_FLGSG9 ) RcvSoMc33993.BitData.FlgSg9 = Status; else if(Sp0ToSg13 == DF_FLGSG8 ) RcvSoMc33993.BitData.FlgSg8 = Status; else if(Sp0ToSg13 == DF_FLGSG7 ) RcvSoMc33993.BitData.FlgSg7_FlgSp7 = Status; else if(Sp0ToSg13 == DF_FLGSG6 ) RcvSoMc33993.BitData.FlgSg6_FlgSp6 = Status; else if(Sp0ToSg13 == DF_FLGSG5 ) RcvSoMc33993.BitData.FlgSg5_FlgSp5 = Status; else if(Sp0ToSg13 == DF_FLGSG4 ) RcvSoMc33993.BitData.FlgSg4_FlgSp4 = Status; else if(Sp0ToSg13 == DF_FLGSG3 ) RcvSoMc33993.BitData.FlgSg3_FlgSp3 = Status; else if(Sp0ToSg13 == DF_FLGSG2 ) RcvSoMc33993.BitData.FlgSg2_FlgSp2 = Status; else if(Sp0ToSg13 == DF_FLGSG1 ) RcvSoMc33993.BitData.FlgSg1_FlgSp1 = Status; else if(Sp0ToSg13 == DF_FLGSG0 ) RcvSoMc33993.BitData.FlgSg0_FlgSp0 = Status; else ; Mc33993CmdSend(NumMc,CmdBit,RcvSoMc33993.ByteData.StaSgH,RcvSoMc33993.ByteData.StaSgL); //(*(PntSta+NumMc)).CmdTriState_Sg = RcvSoMc33993.StaSg; break; default:; } return 1; } //片选产生 //多余20片需要增加 void ChangeCsMc33993(ubyte NumMc,bit HorL) { switch(NumMc) { case Mc33993_0 : CS_SwChip_0 = HorL;break; case Mc33993_1 : CS_SwChip_1 = HorL;break; default:; } } //**************************************************************************** // @Function ubyte Mc33993DataSendRcv(ubyte Data) // //---------------------------------------------------------------------------- // @Description 发送数据,返回接收数据 // 此函数与CPU平台相关,不同CPU需要修改。 // 此函数适用于XC2765,SSC采用查询方式 //---------------------------------------------------------------------------- // @Returnvalue 返回接收的数据 // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 2011-3-4 10:28:27 // //**************************************************************************** ubyte Mc33993DataSendRcv(ubyte Data) { uword i; SSC_vSendData(Data); for(i=0;(i<6000)&&(!(IRCON1&0x02));i++); IRCON1 &= 0xFD; for(i=0;(i<6000)&&(!(IRCON1&0x04));i++); IRCON1 &= 0xFB; return((ubyte)(SSC_vGetData())); } //**************************************************************************** // @Function union ByteBitAccess *Mc33993CmdSend(ubyte NumMc,ubyte CmdBit,ubyte SetBitH,ubyte SetBitL) // //---------------------------------------------------------------------------- // @Description 发送33993的操作命令,返回开关状态 // //---------------------------------------------------------------------------- // @Returnvalue 返回接收的3个字节的开关状态 // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 2011-3-4 10:36:27 // //**************************************************************************** union ByteBitAccess *Mc33993CmdSend(ubyte NumMc,ubyte CmdBit,ubyte SetBitH,ubyte SetBitL) { union ByteBitAccess RcvSoMc,*Pnt; union WordByteBitAccess RcvSoMc33993W; // uword i; //---------------------------------------------------------------------------- RcvSoMc33993W.ByteData.StaSgH = SetBitH; RcvSoMc33993W.ByteData.StaSgL = SetBitL; switch(CmdBit)//保存命令状态 { case DF_CMDSETTING :(*(PntSta+NumMc)).CmdSetting = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDINT_SP :(*(PntSta+NumMc)).CmdInt_Sp = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDINT_SG :(*(PntSta+NumMc)).CmdInt_Sg = RcvSoMc33993W.StaSg;break; case DF_CMDMETALLIC_SP:(*(PntSta+NumMc)).CmdMetallic_Sp = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDMETALLIC_SG:(*(PntSta+NumMc)).CmdMetallic_Sg = RcvSoMc33993W.StaSg;break; case DF_CMDANALOG :(*(PntSta+NumMc)).CmdAnalog = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDWETCURR_SP :(*(PntSta+NumMc)).CmdWetCurr_Sp = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDWETCURR_SG :(*(PntSta+NumMc)).CmdWetCurr_Sg = RcvSoMc33993W.StaSg;break; case DF_CMDTRISTATE_SP:(*(PntSta+NumMc)).CmdTriState_Sp = RcvSoMc33993W.ByteData.StaSgL;break; case DF_CMDTRISTATE_SG:(*(PntSta+NumMc)).CmdTriState_Sg = RcvSoMc33993W.StaSg;break; default:; } if(NumMc > (NumChipSw-1))NumMc = (NumChipSw-1); ChangeCsMc33993(NumMc,0); //---------------------------- _nop_(); _nop_(); _nop_(); _nop_(); //------------------------------- RcvSoMc.ByteData.SoMc33993Byte2 = Mc33993DataSendRcv(CmdBit); RcvSoMc.ByteData.SoMc33993Byte1 = Mc33993DataSendRcv(SetBitH); RcvSoMc.ByteData.SoMc33993Byte0 = Mc33993DataSendRcv(SetBitL); ChangeCsMc33993(NumMc,1); //---------------------------- _nop_(); _nop_(); _nop_(); _nop_(); //------------------------------- Pnt = &RcvSoMc; return (Pnt); }