第一次提交

This commit is contained in:
2025-07-05 21:24:38 +08:00
commit baade62d46
48 changed files with 31255 additions and 0 deletions

496
SwDriver.C Normal file
View File

@@ -0,0 +1,496 @@
#include "MAIN.h"
//*****************************************************************************
//<2F><><EFBFBD>ݽṹ
//*****************************************************************************
//ÿ<><C3BF>33993<39>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8>ŵ<EFBFBD><C5B5><EFBFBD>33993<39>ڲ<EFBFBD><DAB2><EFBFBD>λʱ<CEBB><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>״̬<D7B4>ָ<EFBFBD><D6B8><EFBFBD>
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<39>Ŀ<EFBFBD><C4BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ʣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>԰<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>//XC886<38><36>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
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<39>Ŀ<EFBFBD><C4BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ʣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>԰<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
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;
};
//*****************************************************************************
//ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>
//*****************************************************************************
static struct StaMc33993CmdSet PntSta[2] = {0};
//*****************************************************************************
//<2F><><EFBFBD>ļ<EFBFBD>ȫ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*****************************************************************************
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 ģ<><C4A3>ͨ<EFBFBD><CDA8>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ģʽѡ<CABD><D1A1>
////
////----------------------------------------------------------------------------
//// @Returnvalue ͨ<><CDA8><EFBFBD>л<EFBFBD><D0BB>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1
//// Mode,<2C><><EFBFBD>裬2mA<6D><41>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); //<2F><><EFBFBD><EFBFBD>NumChipSwƬ
// RcvSoMc33993.ByteData.StaSgL = 0;
// RcvSoMc33993.ByteData.StaSgL = (RcvSoMc33993.ByteData.StaSgL | Channal);
// switch(Mode)
// {
// case DF_AN_HIMP:
// RcvSoMc33993.BitData.FlgSg6_FlgSp6 = 0;//<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// 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;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
//
// return 1;
//}
//---------------------------------------------------
//*****************************************************************************
//<2F><><EFBFBD><EFBFBD>
//*****************************************************************************
////****************************************************************************
//// @Function void SwStaSample(UnSwSample *ptmp,ubyte NumSampleChip)
////
////----------------------------------------------------------------------------
//// @Description <20>ɼ<EFBFBD>33993<39>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>źš<C5BA>
////
////----------------------------------------------------------------------------
//// @Returnvalue None
////
////----------------------------------------------------------------------------
//// @Parameters ptmp<6D><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9>ָ<EFBFBD>룬NumSampleChip<69><70>33993оƬ<D0BE><C6AC><EFBFBD><EFBFBD>
////
////----------------------------------------------------------------------------
//// @Date 2008-12-2
////
////****************************************************************************
void SwStaSample(UnSwSample *ptmp)
{
union ByteBitAccess *pStaSwIn;
uword i,k;
//----<2D><>ʼ<EFBFBD><CABC>------------------------------------------------------------------------
InitMc33993Sec();//һ<><D2BB><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12V<32><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>33993<39><33>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF>Իָ<D4BB><D6B8><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>IO
for(i=0;i<DF_SwInNum;i++)
{
for(k=0;k<10;k++);
// Mc33993CmdSend(i,DF_CMDTRISTATE_SP,0,0); //0<><30><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24V <09><><EFBFBD><EFBFBD>KGFģ<46>飬ֱ<E9A3AC>Ӳɼ<D3B2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øı<C4B1><E4BFAA>״̬
// Mc33993CmdSend(i,DF_CMDTRISTATE_SG,0,0); //0<><30><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24V <09><><EFBFBD><EFBFBD>KGFģ<46>飬ֱ<E9A3AC>Ӳɼ<D3B2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øı<C4B1><E4BFAA>״̬
// Mc33993CmdSendOneBit(DF_SwInNum,DF_CMDTRISTATE_SP,DF_FLGSP0 ,D24V);
//<2F><><EFBFBD>زɼ<D8B2>
pStaSwIn = Mc33993CmdSend(i,DF_CMDSWSTATUS,0xff,0xff);
(*ptmp).ArrData.Arr[i][0] = (*pStaSwIn).ByteData.SoMc33993Byte1;
(*ptmp).ArrData.Arr[i][1] = (*pStaSwIn).ByteData.SoMc33993Byte0;
(*ptmp).ArrData.Arr[i][2] = 0x0;//20130706<30>޸ģ<DEB8><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3><EFBFBD>û<EFBFBD>п<EFBFBD><D0BF>ر仯Ҳ<E4BBAF><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>
(*ptmp).ArrData.Arr[i][3] = (*pStaSwIn).ByteData.SoMc33993Byte2;
}
}
//****************************************************************************
// @Function void LedLight(UnSwOut *tmpUn)
//
//----------------------------------------------------------------------------
// @Description <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>ӦLED<45><44>
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters tmpUn<55><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LED<45><44>״̬<D7B4><CCAC>1<EFBFBD><31>ʾ<EFBFBD><CABE>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
//
//----------------------------------------------------------------------------
// @Date 2008-12-2
//
////****************************************************************************
void LedLight(UnSwOut *tmpUn)
{
ubyte i,j;
//----------------------------------------------------------------------------
// InitMc33993Sec();
for(i=0;i<DF_SwOutNum;i++)
{
for(j=0;j<22;j++)
{
switch(j)
{
case 0 :if(((((*tmpUn).ArrData.Arr[i][1])>>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 <20><><EFBFBD><EFBFBD>MC33993<39><33><EFBFBD>γ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ÿ<EFBFBD>β<EFBFBD><CEB2><EFBFBD>33993ʱ<33><CAB1><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters MC33993״̬<D7B4><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>PntSta
//
//----------------------------------------------------------------------------
// @Date 2008-12-2
//
//****************************************************************************
void InitMc33993Sec(void)
{
ubyte i;
for(i=DF_SwInNum;i<NumChipSw;i++)
{
Mc33993CmdSend(i,DF_CMDSETTING, 0, (*(PntSta+i)).CmdSetting); //1<><31><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Դ
Mc33993CmdSend(i,DF_CMDINT_SP, 0, (*(PntSta+i)).CmdInt_Sp ); //1<><31><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
Mc33993CmdSend(i,DF_CMDINT_SG, (ubyte)((((*(PntSta+i)).CmdInt_Sg) >>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdInt_Sg)&0x00ff)); //1<><31><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
Mc33993CmdSend(i,DF_CMDMETALLIC_SP, 0, (*(PntSta+i)).CmdMetallic_Sp); //0<><30>2mA
Mc33993CmdSend(i,DF_CMDMETALLIC_SG, (ubyte)((((*(PntSta+i)).CmdMetallic_Sg)>>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdMetallic_Sg)&0x00ff)); //0<><30>2mA
Mc33993CmdSend(i,DF_CMDANALOG, 0, (*(PntSta+i)).CmdAnalog); //0<><30><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>κ<EFBFBD>ͨ<EFBFBD><CDA8>
Mc33993CmdSend(i,DF_CMDWETCURR_SP, 0, (*(PntSta+i)).CmdWetCurr_Sp); //0<><30>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
Mc33993CmdSend(i,DF_CMDWETCURR_SG, (ubyte)((((*(PntSta+i)).CmdWetCurr_Sg) >>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdWetCurr_Sg)&0x00ff)); //0<><30>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
Mc33993CmdSend(i,DF_CMDTRISTATE_SP, 0, (*(PntSta+i)).CmdTriState_Sp); //0<><30><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>̬
Mc33993CmdSend(i,DF_CMDTRISTATE_SG, (ubyte)((((*(PntSta+i)).CmdTriState_Sg)>>8)&0x00ff),(ubyte)(((*(PntSta+i)).CmdTriState_Sg)&0x00ff)); //0<><30>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>̬
}
}
//****************************************************************************
// @Function void InitMc33993(struct StaMc33993CmdSet *PntSta)
//
//----------------------------------------------------------------------------
// @Description <20><><EFBFBD><EFBFBD>MC33993<39>ڵ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD>ϵ<EFBFBD>ʱ<EFBFBD><CAB1>ʼ<EFBFBD><CABC>
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2008-12-2
//
//****************************************************************************
void InitSW(void)
{
ubyte i;
for(i=0;i<NumChipSw;i++)
{
Mc33993CmdSend(i,DF_CMDSETTING,0,0); //0<><30><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
Mc33993CmdSend(i,DF_CMDINT_SP,0,0xff); //1<><31><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
Mc33993CmdSend(i,DF_CMDINT_SG,0x3f,0xff); //1<><31><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
Mc33993CmdSend(i,DF_CMDMETALLIC_SP,0,0); //0<><30>2mA
Mc33993CmdSend(i,DF_CMDMETALLIC_SG,0,0); //0<><30>2mA
Mc33993CmdSend(i,DF_CMDANALOG,0,0); //0<><30><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>κ<EFBFBD>ͨ<EFBFBD><CDA8>
Mc33993CmdSend(i,DF_CMDWETCURR_SP,0,0); //0<><30>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
Mc33993CmdSend(i,DF_CMDWETCURR_SG,0,0); //0<><30>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
Mc33993CmdSend(i,DF_CMDTRISTATE_SP,0xff,0xff); //0<><30><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>̬
Mc33993CmdSend(i,DF_CMDTRISTATE_SG,0xff,0xff); //0<><30><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>̬
}
}
//****************************************************************************
// @Function ubyte Mc33993CmdSendOneBit(struct StaMc33993CmdSet *PntSta,ubyte NumMc,ubyte CmdBit,ubyte Sp0ToSg13,bit Status)
//
//----------------------------------------------------------------------------
// @Description дMC33993<39><33><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mc33993CmdSend(NumMc,CmdBit,RcvSoMc33993.ByteData.StaSgH,RcvSoMc33993.ByteData.StaSgL);
//
//----------------------------------------------------------------------------
// @Returnvalue <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>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_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;
}
//Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>20Ƭ<30><C6AC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>CPUƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>,<2C><>ͬCPU<50><55>Ҫ<EFBFBD>޸ġ<DEB8>
// <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XC2765<36><35>SSC<53><43><EFBFBD>ò<EFBFBD>ѯ<EFBFBD><D1AF>ʽ
//----------------------------------------------------------------------------
// @Returnvalue <20><><EFBFBD>ؽ<EFBFBD><D8BD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//
//----------------------------------------------------------------------------
// @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 <20><><EFBFBD><EFBFBD>33993<39>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>״̬
//
//----------------------------------------------------------------------------
// @Returnvalue <20><><EFBFBD>ؽ<EFBFBD><D8BD>յ<EFBFBD>3<EFBFBD><33><EFBFBD>ֽڵĿ<DAB5><C4BF><EFBFBD>״̬
//
//----------------------------------------------------------------------------
// @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)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
{
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);
}