Files
RC/SwDriver.C.bak
2025-10-21 20:34:06 +08:00

894 lines
44 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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<DF_SwInNum;i++)
{for(k=0;k<10;k++);
Mc33993CmdSend(i,DF_CMDTRISTATE_SP,0,0); //0£¬½ûÖ¹Èý̬£¬Êä³ö24V
Mc33993CmdSend(i,DF_CMDTRISTATE_SG,0,0); //0£¬½ûÖ¹Èý̬£¬Êä³ö24V
//¿ª¹Ø²É¼¯
pStaSwIn = Mc33993CmdSend(i,DF_CMDSWSTATUS,0xff,0xff);
(*ptmp).ArrData.Arr[i][1] = (*pStaSwIn).ByteData.SoMc33993Byte1;
(*ptmp).ArrData.Arr[i][0] = (*pStaSwIn).ByteData.SoMc33993Byte0;
(*ptmp).ArrData.Arr[i][3] = (*pStaSwIn).ByteData.SoMc33993Byte3;
(*ptmp).ArrData.Arr[i][2] = (*pStaSwIn).ByteData.SoMc33993Byte2;
}
}
//****************************************************************************
// @Function void LedLight(UnSwOut *tmpUn)
//
//----------------------------------------------------------------------------
// @Description ¸ù¾Ý»º´æÄÚÈݵãÁÁÏìÓ¦LED¡£
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters tmpUn£¬´æ·ÅLEDµÄ״̬£¬1±íʾÐèÒªµãÁÁ
//
//----------------------------------------------------------------------------
// @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 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<NumChipSw;i++)
{
Mc33993CmdSend(i,DF_CMDSETTING, 0, (*(PntSta+i)).CmdSetting); //1£¬¿ª¹Øµ½µçÔ´
Mc33993CmdSend(i,DF_CMDINT_SP, 0, (*(PntSta+i)).CmdInt_Sp ); //1£¬¹Ø±ÕÖжÏ
Mc33993CmdSend(i,DF_CMDINT_SG, (ubyte)((((*(PntSta+i)).CmdInt_Sg) >>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;i++)
{
Mc33993CmdSend(i,DF_CMDSETTING,0,0); //0£¬¿ª¹Øµ½µØ
Mc33993CmdSend(i,DF_CMDINT_SP,0,0xff); //1£¬¹Ø±ÕÖжÏ
Mc33993CmdSend(i,DF_CMDINT_SG,0x3f,0xff); //1£¬¹Ø±ÕÖжÏ
Mc33993CmdSend(i,DF_CMDMETALLIC_SP,0,0); //0£¬2mA
Mc33993CmdSend(i,DF_CMDMETALLIC_SG,0,0); //0£¬2mA
Mc33993CmdSend(i,DF_CMDANALOG,0,0); //0£¬²»Ñ¡ÔñÈκÎͨµÀ
Mc33993CmdSend(i,DF_CMDWETCURR_SP,0,0); //0£¬ÊªµçÁ÷¶¨Ê±Æ÷¹Ø±Õ
Mc33993CmdSend(i,DF_CMDWETCURR_SG,0,0); //0£¬ÊªµçÁ÷¶¨Ê±Æ÷¹Ø±Õ
Mc33993CmdSend(i,DF_CMDTRISTATE_SP,0xff,0xff); //0£¬½ûÖ¹Èý̬
Mc33993CmdSend(i,DF_CMDTRISTATE_SG,0xff,0xff); //0£¬½ûÖ¹Èý̬
}
}
//****************************************************************************
// @Function ubyte Mc33993AnalogChSel(struct StaMc33993CmdSet *PntSta,ubyte NumMc,ubyte Mode,ubyte Channal)
//
//----------------------------------------------------------------------------
// @Description Ä£ÄâͨµÀÑ¡Ôñ¡¢Ä£Ê½Ñ¡Ôñ
//
//----------------------------------------------------------------------------
// @Returnvalue ͨµÀÇл»³É¹¦·µ»Ø1
//
//----------------------------------------------------------------------------
// @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 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µÍ×Ö½Ú,Ò²¾ÍÊDz»¸Ä±äÆäËüλµÄ״̬
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);
}