diff --git a/SwDriver.C.bak b/SwDriver.C.bak deleted file mode 100644 index d6ac035..0000000 --- a/SwDriver.C.bak +++ /dev/null @@ -1,893 +0,0 @@ -#include "MAIN.h" - -//***************************************************************************** -//宏定义 -//***************************************************************************** -//多余20片需要增加 -#define Mc33993_0 0 -#define Mc33993_1 1 -#define Mc33993_2 2 -#define Mc33993_3 3 -#define Mc33993_4 4 -#define Mc33993_5 5 -#define Mc33993_6 6 -#define Mc33993_7 7 -#define Mc33993_8 8 -#define Mc33993_9 9 -#define Mc33993_10 10 -#define Mc33993_11 11 -#define Mc33993_12 12 -#define Mc33993_13 13 -#define Mc33993_14 14 -#define Mc33993_15 15 -#define Mc33993_16 16 -#define Mc33993_17 17 -#define Mc33993_18 18 -#define Mc33993_19 19 -#define Mc33993_20 20 - - -#define D24V 0 -#define Gnd 1 - -#define TriOff 0 -#define TriOn 1 - -#define WetCur2mA 0 -#define WetCur16mA 1 - -#define SwToGnd 0 -#define SwToPwr 1 - -#define ALLTRI 0xff -#define ALLD24V 0x0 - -#define DF_CMDSWSTATUS 0x00 -#define DF_CMDSETTING 0x01 -#define DF_CMDINT_SP 0x02 -#define DF_CMDINT_SG 0x03 -#define DF_CMDMETALLIC_SP 0x04 -#define DF_CMDMETALLIC_SG 0x05 -#define DF_CMDANALOG 0x06 -#define DF_CMDWETCURR_SP 0x07 -#define DF_CMDWETCURR_SG 0x08 -#define DF_CMDTRISTATE_SP 0x09 -#define DF_CMDTRISTATE_SG 0x0A -#define DF_CMDCALIBRATION 0x0B -#define DF_CMDSLEEP 0x0C -#define DF_CMDRESET 0x7F - - -#define DF_FLGTHEM 10 -#define DF_FLGINT 11 -#define DF_FLGSP7 12 -#define DF_FLGSP6 13 -#define DF_FLGSP5 14 -#define DF_FLGSP4 15 -#define DF_FLGSP3 16 -#define DF_FLGSP2 17 -#define DF_FLGSP1 18 -#define DF_FLGSP0 19 -#define DF_FLGSG13 20 -#define DF_FLGSG12 21 -#define DF_FLGSG11 22 -#define DF_FLGSG10 23 -#define DF_FLGSG9 24 -#define DF_FLGSG8 25 -#define DF_FLGSG7 26 -#define DF_FLGSG6 27 -#define DF_FLGSG5 28 -#define DF_FLGSG4 29 -#define DF_FLGSG3 30 -#define DF_FLGSG2 31 -#define DF_FLGSG1 32 -#define DF_FLGSG0 33 - -//Analog -#define DF_AN_HIMP 1 -#define DF_AN_2MA 2 -#define DF_AN_16MA 3 - -#define DF_CH_SG0 1 -#define DF_CH_SG1 2 -#define DF_CH_SG2 3 -#define DF_CH_SG3 4 -#define DF_CH_SG4 5 -#define DF_CH_SG5 6 -#define DF_CH_SG6 7 -#define DF_CH_SG7 8 -#define DF_CH_SG8 9 -#define DF_CH_SG9 10 -#define DF_CH_SG10 11 -#define DF_CH_SG11 12 -#define DF_CH_SG12 13 -#define DF_CH_SG13 14 -#define DF_CH_SP0 15 -#define DF_CH_SP1 16 -#define DF_CH_SP2 17 -#define DF_CH_SP3 18 -#define DF_CH_SP4 19 -#define DF_CH_SP5 20 -#define DF_CH_SP6 21 -#define DF_CH_SP7 22 - -//***************************************************************************** -//数据结构 -//***************************************************************************** -//每个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); -ubyte Mc33993AnalogChSel(ubyte NumMc,ubyte Mode,ubyte Channal); -union ByteBitAccess *Mc33993CmdSend(ubyte NumMc,ubyte CmdBit,ubyte SetBitH,ubyte SetBitL); - - - - - - -//--------------------------------------------------- - -//***************************************************************************** -//函数 -//***************************************************************************** -void Swtest2(void) -{ - ulong i,j; - - UnSwOut_1.BitData.S21 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S22 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S23 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S24 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S25 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S26 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S27 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S28 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S29 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S30 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S31 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S32 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S33 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S34 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S35 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S36 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S37 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S38 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S39 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S40 = 1;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - - UnSwOut_1.BitData.S21 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S22 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S23 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S24 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S25 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S26 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S27 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S28 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S29 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S30 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S31 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S32 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S33 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S34 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S35 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S36 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S37 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S38 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S39 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - UnSwOut_1.BitData.S40 = 0;LedLight(&UnSwOut_1); for(j=0;j<200;j++){for(i=0;i<133;i++);} - - -} - -//**************************************************************************** -// @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 ToggleOneBit(ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13) -// -//---------------------------------------------------------------------------- -// @Description 取反给定芯片的给定位,需要提供命令位 -// -//---------------------------------------------------------------------------- -// @Returnvalue None -// -//---------------------------------------------------------------------------- -// @Parameters MC33993状态存储结构体指针PntSta -// -//---------------------------------------------------------------------------- -// @Date 2008-12-2 -// -//**************************************************************************** -// void ToggleOneBit(ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13) -// { -// union WordByteBitAccess RcvSoMc33993; -// bit status; - -// if(CmdBit == DF_CMDTRISTATE_SG) -// { -// RcvSoMc33993.StaSg = (*(PntSta+NumMc)).CmdTriState_Sg; - -// switch(Sp0ToSg13) -// { -// case DF_FLGSG13: status = RcvSoMc33993.BitData.FlgSg13 ;break; -// case DF_FLGSG12: status = RcvSoMc33993.BitData.FlgSg12 ;break; -// case DF_FLGSG11: status = RcvSoMc33993.BitData.FlgSg11 ;break; -// case DF_FLGSG10: status = RcvSoMc33993.BitData.FlgSg10 ;break; -// case DF_FLGSG9 : status = RcvSoMc33993.BitData.FlgSg9 ;break; -// case DF_FLGSG8 : status = RcvSoMc33993.BitData.FlgSg8 ;break; -// case DF_FLGSG7 : status = RcvSoMc33993.BitData.FlgSg7_FlgSp7;break; -// case DF_FLGSG6 : status = RcvSoMc33993.BitData.FlgSg6_FlgSp6;break; -// case DF_FLGSG5 : status = RcvSoMc33993.BitData.FlgSg5_FlgSp5;break; -// case DF_FLGSG4 : status = RcvSoMc33993.BitData.FlgSg4_FlgSp4;break; -// case DF_FLGSG3 : status = RcvSoMc33993.BitData.FlgSg3_FlgSp3;break; -// case DF_FLGSG2 : status = RcvSoMc33993.BitData.FlgSg2_FlgSp2;break; -// case DF_FLGSG1 : status = RcvSoMc33993.BitData.FlgSg1_FlgSp1;break; -// case DF_FLGSG0 : status = RcvSoMc33993.BitData.FlgSg0_FlgSp0;break; -// default:; -// } -// if(status)Mc33993CmdSendOneBit(Mc33993_1,DF_CMDTRISTATE_SG,Sp0ToSg13,D24V); -// else Mc33993CmdSendOneBit(Mc33993_1,DF_CMDTRISTATE_SG,Sp0ToSg13,Gnd); -// } -// else if(CmdBit == DF_CMDTRISTATE_SP) -// { -// RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdTriState_Sp; - -// switch(Sp0ToSg13) -// { -// case DF_FLGSG7 : status = RcvSoMc33993.BitData.FlgSg7_FlgSp7;break; -// case DF_FLGSG6 : status = RcvSoMc33993.BitData.FlgSg6_FlgSp6;break; -// case DF_FLGSG5 : status = RcvSoMc33993.BitData.FlgSg5_FlgSp5;break; -// case DF_FLGSG4 : status = RcvSoMc33993.BitData.FlgSg4_FlgSp4;break; -// case DF_FLGSG3 : status = RcvSoMc33993.BitData.FlgSg3_FlgSp3;break; -// case DF_FLGSG2 : status = RcvSoMc33993.BitData.FlgSg2_FlgSp2;break; -// case DF_FLGSG1 : status = RcvSoMc33993.BitData.FlgSg1_FlgSp1;break; -// case DF_FLGSG0 : status = RcvSoMc33993.BitData.FlgSg0_FlgSp0;break; -// default:; -// } -// if(status)Mc33993CmdSendOneBit(Mc33993_1,DF_CMDTRISTATE_SP,Sp0ToSg13,D24V); -// else Mc33993CmdSendOneBit(Mc33993_1,DF_CMDTRISTATE_SP,Sp0ToSg13,Gnd); -// } -// } - -//**************************************************************************** -// @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=0;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); //多余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 bit Mc33993StaRcvOneBit(ubyte NumMc,ubyte Sp0ToSg13) -// -//---------------------------------------------------------------------------- -// @Description 读取任意一位的开关状态 -// -//---------------------------------------------------------------------------- -// @Returnvalue 返回位状态 -// -//---------------------------------------------------------------------------- -// @Parameters None -// -//---------------------------------------------------------------------------- -// @Date 2008-12-2 -// -//**************************************************************************** -// bit Mc33993StaRcvOneBit(ubyte NumMc,ubyte Sp0ToSg13) -// { -// union ByteBitAccess *Pnt; -// bit BitRcvOneBit; -// //----------------------------------------------------------------------------- -// if(NumMc > (NumChipSw-1))NumMc = (NumChipSw-1); -// Pnt = Mc33993CmdSend(NumMc,DF_CMDSWSTATUS,0xff,0xff); - -// if(Sp0ToSg13 == DF_FLGTHEM)BitRcvOneBit = (*Pnt).BitData.FlgThem; -// else if(Sp0ToSg13 == DF_FLGINT )BitRcvOneBit = (*Pnt).BitData.FlgInt; -// else if(Sp0ToSg13 == DF_FLGSP7 )BitRcvOneBit = (*Pnt).BitData.FlgSp7; -// else if(Sp0ToSg13 == DF_FLGSP6 )BitRcvOneBit = (*Pnt).BitData.FlgSp6; -// else if(Sp0ToSg13 == DF_FLGSP5 )BitRcvOneBit = (*Pnt).BitData.FlgSp5; -// else if(Sp0ToSg13 == DF_FLGSP4 )BitRcvOneBit = (*Pnt).BitData.FlgSp4; -// else if(Sp0ToSg13 == DF_FLGSP3 )BitRcvOneBit = (*Pnt).BitData.FlgSp3; -// else if(Sp0ToSg13 == DF_FLGSP2 )BitRcvOneBit = (*Pnt).BitData.FlgSp2; -// else if(Sp0ToSg13 == DF_FLGSP1 )BitRcvOneBit = (*Pnt).BitData.FlgSp1; -// else if(Sp0ToSg13 == DF_FLGSP0 )BitRcvOneBit = (*Pnt).BitData.FlgSp0; -// else if(Sp0ToSg13 == DF_FLGSG13)BitRcvOneBit = (*Pnt).BitData.FlgSg13; -// else if(Sp0ToSg13 == DF_FLGSG12)BitRcvOneBit = (*Pnt).BitData.FlgSg12; -// else if(Sp0ToSg13 == DF_FLGSG11)BitRcvOneBit = (*Pnt).BitData.FlgSg11; -// else if(Sp0ToSg13 == DF_FLGSG10)BitRcvOneBit = (*Pnt).BitData.FlgSg10; -// else if(Sp0ToSg13 == DF_FLGSG9 )BitRcvOneBit = (*Pnt).BitData.FlgSg9; -// else if(Sp0ToSg13 == DF_FLGSG8 )BitRcvOneBit = (*Pnt).BitData.FlgSg8; -// else if(Sp0ToSg13 == DF_FLGSG7 )BitRcvOneBit = (*Pnt).BitData.FlgSg7; -// else if(Sp0ToSg13 == DF_FLGSG6 )BitRcvOneBit = (*Pnt).BitData.FlgSg6; -// else if(Sp0ToSg13 == DF_FLGSG5 )BitRcvOneBit = (*Pnt).BitData.FlgSg5; -// else if(Sp0ToSg13 == DF_FLGSG4 )BitRcvOneBit = (*Pnt).BitData.FlgSg4; -// else if(Sp0ToSg13 == DF_FLGSG3 )BitRcvOneBit = (*Pnt).BitData.FlgSg3; -// else if(Sp0ToSg13 == DF_FLGSG2 )BitRcvOneBit = (*Pnt).BitData.FlgSg2; -// else if(Sp0ToSg13 == DF_FLGSG1 )BitRcvOneBit = (*Pnt).BitData.FlgSg1; -// else if(Sp0ToSg13 == DF_FLGSG0 )BitRcvOneBit = (*Pnt).BitData.FlgSg0; -// else ; -// return BitRcvOneBit; -// } - -//**************************************************************************** -// @Function ubyte Mc33993CmdSendOneBit(struct StaMc33993CmdSet *PntSta,ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13,bit Status) -// -//---------------------------------------------------------------------------- -// @Description 写MC33993任意位,调用Mc33993CmdSend(NumMc,CmdBit,RcvSoMc33993.ByteData.StaSgH,RcvSoMc33993.ByteData.StaSgL); -// -//---------------------------------------------------------------------------- -// @Returnvalue 成功返回1 -// -//---------------------------------------------------------------------------- -// @Parameters None -// -//---------------------------------------------------------------------------- -// @Date 2008-12-2 -// -//**************************************************************************** -ubyte Mc33993CmdSendOneBit(ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13,bit Status) -{ - union WordByteBitAccess RcvSoMc33993; -//---------------------------------------------------------------------------- - if(NumMc > (NumChipSw-1))NumMc = (NumChipSw-1); - switch(CmdBit) - { -//DF_CMDSETTING - case DF_CMDSETTING: - RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdSetting; //用之前的状态填充RcvSoMc33993低字节,也就是不改变其它位的状态 - 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)).CmdSetting = RcvSoMc33993.ByteData.StaSgL;//更新后的状态保存 - break; -//DF_CMDINT_SP - case DF_CMDINT_SP: - RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdInt_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)).CmdInt_Sp = RcvSoMc33993.ByteData.StaSgL; - break; -//DF_CMDMETALLIC_SP - case DF_CMDMETALLIC_SP: - RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdMetallic_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)).CmdMetallic_Sp = RcvSoMc33993.ByteData.StaSgL; - break; -//DF_CMDWETCURR_SP - case DF_CMDWETCURR_SP: - RcvSoMc33993.ByteData.StaSgL = (*(PntSta+NumMc)).CmdWetCurr_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)).CmdWetCurr_Sp = RcvSoMc33993.ByteData.StaSgL; - break; -//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_CMDINT_SG - case DF_CMDINT_SG: - RcvSoMc33993.StaSg = (*(PntSta+NumMc)).CmdInt_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)).CmdInt_Sg = RcvSoMc33993.StaSg; - break; -//DF_CMDMETALLIC_SG - case DF_CMDMETALLIC_SG: - RcvSoMc33993.StaSg = (*(PntSta+NumMc)).CmdMetallic_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)).CmdMetallic_Sg = RcvSoMc33993.StaSg; - break; -//DF_CMDWETCURR_SG - case DF_CMDWETCURR_SG: - RcvSoMc33993.StaSg = (*(PntSta+NumMc)).CmdWetCurr_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)).CmdWetCurr_Sg = RcvSoMc33993.StaSg; - 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 RcvSoMc33993,*Pnt; - union WordByteBitAccess RcvSoMc33993W; -// uword i; -//---------------------------------------------------------------------------- - RcvSoMc33993W.ByteData.StaSgH = SetBitH; - RcvSoMc33993W.ByteData.StaSgL = SetBitL; - switch(CmdBit)//保存命令状态 - { - case DF_CMDSETTING :(*(PntSta+NumMc)).CmdSetting = RcvSoMc33993W.StaSg;break; - case DF_CMDINT_SP :(*(PntSta+NumMc)).CmdInt_Sp = RcvSoMc33993W.StaSg;break; - case DF_CMDINT_SG :(*(PntSta+NumMc)).CmdInt_Sg = RcvSoMc33993W.StaSg;break; - case DF_CMDMETALLIC_SP:(*(PntSta+NumMc)).CmdMetallic_Sp = RcvSoMc33993W.StaSg;break; - case DF_CMDMETALLIC_SG:(*(PntSta+NumMc)).CmdMetallic_Sg = RcvSoMc33993W.StaSg;break; - case DF_CMDANALOG :(*(PntSta+NumMc)).CmdAnalog = RcvSoMc33993W.StaSg;break; - case DF_CMDWETCURR_SP :(*(PntSta+NumMc)).CmdWetCurr_Sp = RcvSoMc33993W.StaSg;break; - case DF_CMDWETCURR_SG :(*(PntSta+NumMc)).CmdWetCurr_Sg = RcvSoMc33993W.StaSg;break; - case DF_CMDTRISTATE_SP:(*(PntSta+NumMc)).CmdTriState_Sp = RcvSoMc33993W.StaSg;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_(); - -//------------------------------- - - RcvSoMc33993.ByteData.SoMc33993Byte2 = Mc33993DataSendRcv(CmdBit); - - RcvSoMc33993.ByteData.SoMc33993Byte1 = Mc33993DataSendRcv(SetBitH); - - RcvSoMc33993.ByteData.SoMc33993Byte0 = Mc33993DataSendRcv(SetBitL); - - ChangeCsMc33993(NumMc,1); -//---------------------------- - _nop_(); - _nop_(); - _nop_(); - _nop_(); -//------------------------------- - Pnt = &RcvSoMc33993; - return (Pnt); -}