#define GLOBALS_APP_CAN #include "../App_Headers/includes.h" #pragma CODE_SEG OTHER_ROM /*------------------------------------------------------------------------- �������ƣ�App_CheckCanDrop �� �ܣ� �� ����None ������ֵ��None ʹ��˵���� --------------------------------------------------------------------------*/ INT8U CanMsg1CFFBE18_On=0; void App_CheckCanDrop(void) { if(Curkeyinput == KeyOFF) { CanMsgF004.ProceF = empoty; CanMsgFEEE.ProceF = empoty; CanMsgEECA00.ProceF = empoty; // CanMsgEECA3D.ProceF = empoty; CanMsgFEFF.ProceF = empoty; CanMsgFEE4.ProceF = empoty; CanMsgFF08.ProceF = empoty; CanMsgFE5600.ProceF = empoty; CanMsgFE563D.ProceF = empoty; CanMsgFE40.ProceF = empoty; // CanMsgFF0A.ProceF = empoty; lzs--shan CanMsgF001.ProceF = empoty; //CanMsg18ECFF00.ProceF = empoty; //CanMsg18EBFF00.ProceF = empoty; CanMsgFD0700.ProceF = empoty; CanMsg18FD7C00.ProceF = empoty; CanMsg18E0FF00.ProceF = empoty; //--lzs--jia---- CanMsg18FEFF00.ProceF = empoty; //��ʻԱ�����---Ϋ����---�� // CanMsg18FECA10.ProceF = empoty; //��ʻԱ�����---Ϋ����---�� CanMsg1CFFBE18.ProceF = empoty; CanMsg5F2.ProceF = empoty; } //ת�ٱ��� if(CanClk.Signal.ExistF004 == Enable) { if(CanClk.IDF004Time >= T_100ms) { CanClk.IDF004Time = null; if(CanClk.IDF004Cn == null) { bF004Flag=0; RevMeter.CurBoardVal=0; CanClk.Signal.ExistF004 = Disable; } if(CanClk.IDF004Cn > null) { CanClk.IDF004Cn --; } } } //-------------- if(CanClk.IDDropTime >= T_100ms) { CanClk.IDDropTime = null; if(CanClk.Signal.ExistFEF1 == Enable) { if(CanClk.IDFEF1Cn == null) { bDSTable[ID_CRUISELAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 CanClk.Signal.ExistFEF1 = Disable; Cruise_OUT =0; } if(CanClk.IDFEF1Cn > null) { CanClk.IDFEF1Cn --; } } //----------------------------------- if(CanClk.Signal.ExistFD7C == Enable) { if(CanClk.IDFD7CCn == null) { CanMsg18FD7C00.Data[0].bbyte = 0; bDSTable[ID_DPFLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DPFRLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DPFLAMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_DPFForbit]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 DPF_OUT =0; HOutputTempL_OUT =0; HOutputTempR_OUT =0; CanMsg18FD7C00.Data[2].bbyte = 0; CanClk.Signal.ExistFD7C = Disable; } if(CanClk.IDFD7CCn > null) { CanClk.IDFD7CCn --; } } if(CanClk.Signal.ExistE0FF00 == Enable) { if(CanClk.IDE0FF00Cn == null) { bDSTable[ID_DPFForbit]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 CanMsg18E0FF00.Data[5].bbyte = 0; CanClk.Signal.ExistE0FF00 = Disable; } if(CanClk.IDE0FF00Cn > null) { CanClk.IDE0FF00Cn --; } } } //ˮ�±���------------------------------ if(CanClk.Signal.ExistFEEE == Enable) { if(CanClk.IDFEEETime >= T_100ms) { CanClk.IDFEEETime = null; if(CanClk.IDFEEECn == null) { bFEEEFlag=0; TempMeter.CurBoardVal=0; TempMeter_CurBoardVal=0; TempMeter_CurBoardVal_Old = 0; TempMeter_DelayTime = 0; CanClk.Signal.ExistFEEE = Disable; } if(CanClk.IDFEEECn > null) { CanClk.IDFEEECn --; } } } //��ˮ����-------------------------------- if(CanClk.Signal.ExistFEFF == Enable) { if(CanClk.IDFEFFTime >= T_100ms) { CanClk.IDFEFFTime = null; if(CanClk.IDFEFFCn == null) { bFEFFFlag=0; bDSTable[ID_WIF]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DRIVERLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 OILWATER_LED_P = 1; CanMsgFEFF.Data[0].bbyte = 0; CanMsgFEFF.Data[1].bbyte = 0x07; CanClk.Signal.ExistFEFF = Disable; } if(CanClk.IDFEFFCn > null) { CanClk.IDFEFFCn --; } } } // Ԥ��--------------------------------- if(CanClk.Signal.ExistFEE4 == Enable) { if(CanClk.IDFEE4Time >= T_100ms) { CanClk.IDFEE4Time = null; if(CanClk.IDFEE4Cn == null) { bFEE4Flag=0; bDSTable[ID_HEAT]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 CanClk.Signal.ExistFEE4 = Disable; } if(CanClk.IDFEE4Cn > null) { CanClk.IDFEE4Cn --; } } } //����Һ00 if(CanClk.Signal.ExistFE5600 == Enable) { if(CanClk.IDFE5600Time >= T_100ms) { CanClk.IDFE5600Time = null; if(CanClk.IDFE5600Cn == null) { bFE5600Flag=0; CanMsgFE5600.Data[0].bbyte = 0; CanClk.Signal.ExistFE5600 = Disable; } if(CanClk.IDFE5600Cn > null) { CanClk.IDFE5600Cn --; } } } //����Һ3D if(CanClk.Signal.ExistFE563D == Enable) { if(CanClk.IDFE563DTime >= T_100ms) { CanClk.IDFE563DTime = null; if(CanClk.IDFE563DCn == null) { bFE563DFlag=0; CanMsgFE563D.Data[0].bbyte = 0; CanClk.Signal.ExistFE563D = Disable; } if(CanClk.IDFE563DCn > null) { CanClk.IDFE563DCn --; } } } //-------------------------------------- if((CanClk.Signal.ExistFE563D==Disable)&&(CanClk.Signal.ExistFE5600==Disable)) { bCatalystLevel = 0; AdbuleMeter.CurBoardVal = 0; } //ת��������� if(CanClk.Signal.ExistFE40 == Enable) { if(CanClk.IDFE40Time >= T_100ms) { CanClk.IDFE40Time = null; if(CanClk.IDFE40Cn == null) { bFE40Flag=0; CanClk.Signal.ExistFE40 = Disable; } if(CanClk.IDFE40Cn > null) { CanClk.IDFE40Cn --; } } } // ABS���� if(CanClk.Signal.ExistF001 == Enable) { if(CanClk.IDF001Time >= T_100ms) { CanClk.IDF001Time = null; if(CanClk.IDF001Cn == null) { bF001Flag=0; CanMsgF001.Data[5].bbyte = 0; bDSTable[ID_ABS]&=(~(DS0_MASK|DS1_MASK)); CanClk.Signal.ExistF001 = Disable; } if(CanClk.IDF001Cn > null) { CanClk.IDF001Cn --; } } } //���ſ��� if(CanClk.Signal.Exist0CF00300 == Enable) { if(CanClk.ID0CF00300Time >= T_100ms) { CanClk.ID0CF00300Time = null; if(CanClk.ID0CF00300Cn == null) { b0CF00300Flag = 0; CanMsg0CF00300.Data[1].bbyte= 0xFF; OilScale = 255; CanClk.Signal.Exist0CF00300 = Disable; } if(CanClk.ID0CF00300Cn > null) { CanClk.ID0CF00300Cn --; } } } //�ͺ�--------------- if(CanClk.Signal.ExistFEF200 == Enable) { if(CanClk.IDFEF200Time >= T_100ms) { CanClk.IDFEF200Time = null; if(CanClk.IDFEF200Cn == null) { bFEF200Flag = 0; CanMsg18FEF200.Data[2].bbyte= 0; CanMsg18FEF200.Data[3].bbyte= 0; CanMsg18FEF200.Data[4].bbyte= 0; CanMsg18FEF200.Data[5].bbyte= 0; InstFuelConsump = 0; AvgFuelConsump = 0; CanClk.Signal.ExistFEF200 = Disable; } if(CanClk.IDFEF200Cn > null) { CanClk.IDFEF200Cn --; } } } //����ѹ�� if(CanClk.Signal.ExistFEEF == Enable) { if(CanClk.IDFEEFTime >= T_100ms) { CanClk.IDFEEFTime = null; if(CanClk.IDFEEFCn == null) { bFEEFlag = 0; CanMsgFEEF.Data[3].bbyte= 0; OilPressure = 255; Oil_LED_P = 0;//�� CanClk.Signal.ExistFEF200 = Disable; } if(CanClk.IDFEF200Cn > null) { CanClk.IDFEF200Cn --; } } } //----hyq--20180318 18ECFF00 /*if(CanClk.Signal.Exist18ECFF00) { if(CanClk.ID18ECFF00Time >= T_100ms) { CanClk.ID18ECFF00Time = null; if(CanClk.ID18ECFF00Cn == null) { EcmDtcTbl[0].Err=0; bEcmDtcCnt=0; Engine21_18EBFF00 = 0; OBDLamp87_18EBFF00 = 0; MulCanMsg_ECM18EBFF00.bBuf[0] = 0x00; CanClk.Signal.Exist18ECFF00 = Disable; } if(CanClk.ID18ECFF00Cn > null) { CanClk.ID18ECFF00Cn --; } } } */ //OBD�� OBD(Check) if(CanClk.Signal.ExistFECA00 == Enable) { if(CanClk.IDFECA00Time >= T_100ms) { CanClk.IDFECA00Time = null; if(CanClk.IDFECA00Cn == null) { bFECA00Flag=0; bDSTable[ID_EWLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 CanMsgEECA00.Data[1].bbyte = 0x3c; CanMsgEECA00.Data[0].bbyte = 0x30; CanClk.Signal.ExistFECA00 = Disable; } if(CanClk.IDFECA00Cn > null) { CanClk.IDFECA00Cn --; } } } //OBD�� OBD(Check) if(CanClk.Signal.ExistFECA3D == Enable) { if(CanClk.IDFECA3DTime >= T_100ms) { CanClk.IDFECA3DTime = null; if(CanClk.IDFECA3DCn == null) { bFECA3DFlag=0; bDSTable[ID_ESLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 CanClk.Signal.ExistFECA3D = Disable; } if(CanClk.IDFECA3DCn > null) { CanClk.IDFECA3DCn --; } } } // if(CanClk.Signal.ExistFF08 == Enable) { if(CanClk.IDFF08Time >= T_100ms) { CanClk.IDFF08Time = null; if(CanClk.IDFF08Cn == null) { bFF08Flag=0; CanClk.Signal.ExistFF08 = Disable; } if(CanClk.IDFF08Cn > null) { CanClk.IDFF08Cn --; } } } // if(CanClk.Signal.ExistFEBF0B == Enable) { if(CanClk.IDFEBF0BTime >= T_100ms) { CanClk.IDFEBF0BTime = null; if(CanClk.IDFEBF0BCn == null) { CanMsgFEBF0B.Data[1].bbyte = 0; VehMeter.CurBoardVal = 0; CanClk.Signal.ExistFEBF0B = Disable; } if(CanClk.IDFEBF0BCn > null) { CanClk.IDFEBF0BCn --; } } } // if(CanClk.Signal.ExistFD0700 == Enable) { if(CanClk.IDFD0700Time >= T_100ms) { CanClk.IDFD0700Time = null; if(CanClk.IDFD0700Cn == null) { CanMsgFD0700.Data[0].bbyte = 0x0c; CanClk.Signal.ExistFD0700 = Disable; } if(CanClk.IDFD0700Cn > null) { CanClk.IDFD0700Cn --; } } } //--��ʻԱ�����--Ϋ����------------------------ if(CanClk.Signal.Exist18FEFF00 == Enable) { if(CanClk.ID18FEFF00Time >= T_100ms) { CanClk.ID18FEFF00Time = null; if(CanClk.ID18FEFF00Cn == null) { CanMsg18FEFF00.Data[1].bbyte = 0; CanClk.Signal.Exist18FEFF00 = Disable; } if(CanClk.ID18FEFF00Cn > null) { CanClk.ID18FEFF00Cn --; } } } //T-BOX //CanMsg1CFFBE18_On = 0; if(CanClk.Signal.Exist1CFFBE18 == Enable) { if(CanClk.ID1CFFBE18Time >= T_100ms) { CanClk.ID1CFFBE18Time = null; if(CanClk.ID1CFFBE18Cn == null) { CanMsg1CFFBE18.Data[2].bbyte = 0; CanClk.Signal.Exist1CFFBE18 = Disable; CanMsg1CFFBE18_On = 0; } if(CanClk.ID1CFFBE18Cn > null) { CanClk.ID1CFFBE18Cn --; CanMsg1CFFBE18_On = 1; } } } //--��ʻԱ�����--�����------------------------ /* if(CanClk.Signal.Exist18FECA10 == Enable) { if(CanClk.ID18FECA10Time >= T_100ms) { CanClk.ID18FECA10Time = null; if(CanClk.ID18FECA10Cn == null) { CanMsg18FECA10.Data[1].bbyte = 0; CanClk.Signal.Exist18FECA10 = Disable; } if(CanClk.ID18FECA10Cn > null) { CanClk.ID18FECA10Cn --; } } } */ //Զ������ if(CanClk.Signal.Exist5F2 == Enable) { if(CanClk.ID5F2Time >= T_100ms) { CanClk.ID5F2Time = null; if (CanClk.ID5F2Cn == null) { CanMsg5F2.Data[7].bbyte = 0; ClearOdoCanTimes = 0; CanClk.Signal.Exist5F2 = Disable; } if (CanClk.ID5F2Cn > null) { CanClk.ID5F2Cn --; } } } } /*------------------------------------------------------------------------- �������ƣ�App_GetNormalData �� �ܣ� �� ����None ������ֵ��None ʹ��˵���� --------------------------------------------------------------------------*/ INT8U quzhi; INT8U temp_State_keep; void App_GetNormalData(void) { INT32U temp1 = null; INT32U temp2 = null; // if(CanMsgF004.ProceF) { RevMeter.CurBoardVal=(((INT16U)CanMsgF004.Data[4].bbyte)<<8)|CanMsgF004.Data[3].bbyte; RevMeter.CurBoardVal>>=3; if(RevMeter.CurBoardVal>200) { RevFlag=1; } CanMsgF004.ProceF = Disable; } // if(CanMsgFEEE.ProceF) { if(CanMsgFEEE.Data[0].bbyte>40) { TempMeter.CurBoardVal=(INT16U)(CanMsgFEEE.Data[0].bbyte-40); } else TempMeter.CurBoardVal=50; CanMsgFEEE.ProceF = Disable; quzhi=CanMsgFEEE.Data[0].bbyte; if(CanMsgFEEE.Data[0].bbyte>145) { temp_State_keep=1; } if(CanMsgFEEE.Data[0].bbyte<143) { temp_State_keep=0; } if(temp_State_keep) { //������+���� // bDSTable[ID_WIF]|=DS0_MASK; // bDSTable[ID_WIF]&=(~DS1_MASK); FDJ2_LED_P=0; DIRC_FDJ2_LED_P=1; } else { //�رձ�����+�ر����� //bDSTable[ID_WIF]&=(~(DS0_MASK|DS1_MASK)); FDJ2_LED_P=1; DIRC_FDJ2_LED_P=1; } CanMsgFEEE.ProceF = Disable; } // if(CanMsgFEFF.ProceF) { if(CanMsgFEFF.Data[0].bbib.bib0!=3 ) //��ˮ���� { if(1==CanMsgFEFF.Data[0].bbib.bib0 ) { bDSTable[ID_WIF]|=DS0_MASK; bDSTable[ID_WIF]&=(~DS1_MASK); } else { bDSTable[ID_WIF]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_WIF]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsgFEFF.ProceF = Disable; } // if(CanMsg18FEF100.ProceF) { if(CanMsg18FEF100.Data[3].bbib.bib0!=3 ) //Ѳ�� { if(1==CanMsg18FEF100.Data[3].bbib.bib0 ) { bDSTable[ID_CRUISELAMP]|=DS0_MASK; } else { bDSTable[ID_CRUISELAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_CRUISELAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsg18FEF100.ProceF = Disable; } //// if((CanMsg18FD7C00.ProceF)||(CanMsg18E0FF00.ProceF)) { /* if(((CanMsg18FD7C00.Data[0].bbyte&0x07)!=0x07)||((CanMsg18FD7C00.Data[6].bbyte&0x1C)!=0x00)) //�����¶ȱ��� { if(((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x07)||((CanMsg18FD7C00.Data[6].bbyte&0x1C)==0x04)) { bDSTable[ID_HOUTPUTTEMP]|=DS0_MASK; bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); } // else if((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x04 ) { bDSTable[ID_HOUTPUTTEMPBlink]|=DS0_MASK; bDSTable[ID_HOUTPUTTEMP]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); } else if((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x02 ) { bDSTable[ID_HOUTPUTTEMPRed]|=DS0_MASK; bDSTable[ID_HOUTPUTTEMP]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); } else { bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMP]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); } } */ if((CanMsg18FD7C00.Data[6].bbyte&0x1C)==0x04) { bDSTable[ID_HOUTPUTTEMP]|=DS0_MASK; bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); } else { bDSTable[ID_HOUTPUTTEMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_HOUTPUTTEMPRed]&=(~(DS0_MASK|DS1_MASK)); } // if((CanMsg18FD7C00.Data[0].bbyte&0x07)!=0x07)//DPF { if((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x01) { bDSTable[ID_DPFLAMP]|=DS0_MASK; bDSTable[ID_DPFLAMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x04) { bDSTable[ID_DPFLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DPFLAMPBlink]|=DS0_MASK; } else { bDSTable[ID_DPFLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DPFLAMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_DPFLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_DPFLAMPBlink]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } //lzs--gai-- if((CanMsg18FD7C00.Data[0].bbyte&0x07)!=0x07)//DPF �� { if((CanMsg18FD7C00.Data[0].bbyte&0x07)==0x02) { bDSTable[ID_DPFRLAMP]|=DS0_MASK; } else { bDSTable[ID_DPFRLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_DPFRLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } //lzs--gai-- if((CanMsg18FD7C00.Data[2].bbyte&0x03)==0x01)//((CanMsg18FD7C00.Data[2].bbyte&0x03)==0x01) { bDSTable[ID_DPFForbit]|=DS0_MASK; } else if((CanMsg18FD7C00.Data[2].bbyte&0x0C)==0x04)//((CanMsg18FD7C00.Data[2].bbyte&0x0c)==0x04) { bDSTable[ID_DPFForbit]|=DS0_MASK; //����������Ǹ���DPF��ֹ���� } else if((CanMsg18E0FF00.Data[5].bbyte&0x03)==0x01) //�±���18E0FF00 { bDSTable[ID_DPFForbit]|=DS0_MASK; } else { bDSTable[ID_DPFForbit]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsg18FD7C00.ProceF = Disable; CanMsg18E0FF00.ProceF = Disable; } // /*if(CanMsg18E0FF00.ProceF) { if((CanMsg18E0FF00.Data[5].bbyte&0x03)==0x01) //�±���18E0FF00 { bDSTable[ID_DPFForbit]|=DS0_MASK; } else { bDSTable[ID_DPFForbit]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsg18E0FF00.ProceF = Disable; }*/ // if(CanMsgFEE4.ProceF)//Ԥ�� { if(CanMsgFEE4.Data[3].bbib.bib0!=3 ) { if(1==CanMsgFEE4.Data[3].bbib.bib0 ) { bDSTable[ID_HEAT]|=DS0_MASK; bDSTable[ID_HEAT]&=(~DS1_MASK); } else { bDSTable[ID_HEAT]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_HEAT]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsgFEE4.ProceF = Disable; } // if(CanMsgFE40.ProceF) { if(CanMsgFE40.Data[1].bbib.bib3!=3 ) //��ת�� { bLtrnFlag=1; if(1==CanMsgFE40.Data[1].bbib.bib3 ) { bDSTable[ID_LTRN]|=DS0_MASK; bDSTable[ID_LTRN]&=(~DS1_MASK); } else { bDSTable[ID_LTRN ]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bDSTable[ID_LTRN ]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bLtrnFlag=0; } //��ת�� if(CanMsgFE40.Data[1].bbib.bib2!=3 ) { bRtrnFlag=1; if(1==CanMsgFE40.Data[1].bbib.bib2 ) { bDSTable[ID_RTRN]|=DS0_MASK; bDSTable[ID_RTRN]&=(~DS1_MASK); } else { bDSTable[ID_RTRN]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bRtrnFlag=0; bDSTable[ID_RTRN]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } // ������ if(CanMsgFE40.Data[4].bbib.bib0!=3 ) { bFFogFlag=1; if(1==CanMsgFE40.Data[4].bbib.bib0 ) { bDSTable[ID_FFOG]|=DS0_MASK; bDSTable[ID_FFOG]&=(~DS1_MASK); } else { bDSTable[ID_FFOG]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bFFogFlag=0; bDSTable[ID_FFOG]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsgFE40.ProceF = Disable; } // if(CanMsgF001.ProceF)//ABS { if(CanMsgF001.Data[5].bbib.bib2!=3 ) { bAbsFlag=1; if(1==CanMsgF001.Data[5].bbib.bib2 ) { bDSTable[ID_ABS]|=DS0_MASK; bDSTable[ID_ABS ]&=(~DS1_MASK); } else { bDSTable[ID_ABS]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } } else { bAbsFlag=0; bDSTable[ID_ABS]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } CanMsgF001.ProceF = Disable; } //����Һ---����00 3D if(CanMsgFE5600.ProceF) { bAdBlueFlag=1; CanMsgFE5600.ProceF = Disable; } //----------------- if(CanMsgFE563D.ProceF) { CanMsgFE563D.ProceF = Disable; } if(CanClk.Signal.ExistFE563D==Enable) { if(InitAdblueTime>=T_2s) { bCatalystLevel = (INT8U)((INT16U)CanMsgFE563D.Data[0].bbyte*2/5); } } else { if(InitAdblueTime>=T_2s) { bCatalystLevel = (INT8U)((INT16U)CanMsgFE5600.Data[0].bbyte*2/5); } } //glz--20170519 ���ſ��� if(CanMsg0CF00300.ProceF) { b0CF00300Flag = 1; OilScale = (INT8U)CanMsg0CF00300.Data[1].bbyte; CanMsg0CF00300.ProceF = Disable; } //�ͺ� if(CanMsg18FEF200.ProceF) { bFEF200Flag = 1; //˲ʱ�ͺ� temp1 = (INT8U)CanMsg18FEF200.Data[3].bbyte; temp1 = temp1 << 8; temp1 |= (INT8U)CanMsg18FEF200.Data[2].bbyte; if(temp1>0) { InstFuelConsump = 512000 / temp1; } else { InstFuelConsump = 0; } //ƽ���ͺ� temp1 = (INT8U)CanMsg18FEF200.Data[5].bbyte; temp1 = temp1 << 8; temp1 |= (INT8U)CanMsg18FEF200.Data[4].bbyte; if(temp1>0) { AvgFuelConsump = 512000 / temp1; } else { AvgFuelConsump = 0; } CanMsg18FEF200.ProceF = Disable; } //����ѹ�� if(CanMsgFEEF.ProceF) { bFEEFlag = 1; OilPressure = ((INT16U)CanMsgFEEF.Data[3].bbyte*4); CanMsgFEEF.ProceF = Disable; } //����㲥 /*if(CanMsg18ECFF00.ProceF) { GetConnectInfo(&MulCanMsg_ECM18EBFF00,CanMsg18ECFF00.Data); CanMsg18ECFF00.ProceF=EMPTY; } //����㲥���� if(CanMsg18EBFF00.ProceF) { if(GetMulDTC(&MulCanMsg_ECM18EBFF00,CanMsg18EBFF00.Data)) UpdateDtcTbl(&MulCanMsg_ECM18EBFF00,EcmDtcTbl,&bEcmDtcCnt); CanMsg18EBFF00.ProceF=EMPTY; } // if(((MulCanMsg_ECM18EBFF00.bBuf[0]&0x03)==0x01)&&(CanClk.Signal.Exist18ECFF00==1)) { Engine21_18EBFF00 = 1; } else { Engine21_18EBFF00 = 0; } // if(((MulCanMsg_ECM18EBFF00.bBuf[0]&0xC0)==0x40)&&(CanClk.Signal.Exist18ECFF00==1)) { OBDLamp87_18EBFF00=1; } else { OBDLamp87_18EBFF00=0; } */ // if(CanMsgEECA00.ProceF) { CanMsgEECA00.ProceF = Disable; } // if(CanMsgFD0700.ProceF) { CanMsgFD0700.ProceF = Disable; } // /* if(CanMsgEECA3D.ProceF) { CanMsgEECA3D.ProceF = Disable; } */ //OBD�� /*if((CanMsgEECA00.Data[0].bbyte&0x30)==0x10) { bDSTable[ID_ESLAMP]|=DS0_MASK; bDSTable[ID_ESLAMP]&=(~DS1_MASK); } else */ if((CanMsgFD0700.Data[0].bbyte&0x03)==0x01) { bDSTable[ID_ESLAMP]|=DS0_MASK; bDSTable[ID_ESLAMP]&=(~DS1_MASK); } else { bDSTable[ID_ESLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } // if(CanMsgFF08.ProceF) { CanMsgFF08.ProceF = Disable; } //����������(OBD��)(���������) if(Engine21_18EBFF00 == 1) { bDSTable[ID_EWLAMP]|=DS0_MASK; bDSTable[ID_EWLAMP]&=(~DS1_MASK); // bDSTable[ID_EWLAMPBlink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if((CanMsgEECA00.Data[0].bbyte&0x03)==0x01) { bDSTable[ID_EWLAMP]|=DS0_MASK; bDSTable[ID_EWLAMP]&=(~DS1_MASK); // bDSTable[ID_EWLAMPBlink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } /* else if(((CanMsgEECA00.Data[1].bbyte&0x30)==0x00)&&((CanMsgEECA00.Data[0].bbyte&0x30)==0x10))//1hz { bDSTable[ID_EWLAMPBlink1]|=DS0_MASK; bDSTable[ID_EWLAMPBlink1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if(((CanMsgEECA00.Data[1].bbyte&0x30)==0x10)&&((CanMsgEECA00.Data[0].bbyte&0x30)==0x10))//2hz { bDSTable[ID_EWLAMPBlink2]|=DS0_MASK; bDSTable[ID_EWLAMPBlink2]&=(~DS1_MASK); // bDSTable[ID_EWLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 }//lzs--*/ else if((CanMsgEECA00.Data[0].bbyte&0x30)==0x10) { bDSTable[ID_EWLAMP]|=DS0_MASK; bDSTable[ID_EWLAMP]&=(~DS1_MASK); // bDSTable[ID_EWLAMPBlink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else { bDSTable[ID_EWLAMP]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMPBlink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } //OBD if(OBDLamp87_18EBFF00 == 1) { bDSTable[ID_EWLAMP1]|=DS0_MASK; bDSTable[ID_EWLAMP1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if(CanClk.Signal.ExistFF08&&(CanMsgFF08.Data[3].bbyte&0x03)==0x01) //lzs--jia-- { bDSTable[ID_EWLAMP1]|=DS0_MASK; bDSTable[ID_EWLAMP1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if(CanClk.Signal.ExistFF08&&(CanMsgFF08.Data[3].bbyte&0x03)==0x02) //2hz { bDSTable[ID_EWLAMP1Blink2]|=DS0_MASK; bDSTable[ID_EWLAMP1Blink2]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } /* else if(CanClk.Signal.ExistFECA00&&((CanMsgEECA00.Data[1].bbyte&0xC0)==0x00)&&((CanMsgEECA00.Data[0].bbyte&0xC0)==0x40)) //1hz { bDSTable[ID_EWLAMP1Blink1]|=DS0_MASK; bDSTable[ID_EWLAMP1Blink1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if(CanClk.Signal.ExistFECA00&&((CanMsgEECA00.Data[1].bbyte&0xC0)==0x40)&&((CanMsgEECA00.Data[0].bbyte&0xC0)==0x40)) //2hz { bDSTable[ID_EWLAMP1Blink2]|=DS0_MASK; bDSTable[ID_EWLAMP1Blink2]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else if(CanClk.Signal.ExistFECA00&&((CanMsgEECA00.Data[0].bbyte&0xC0)==0x40)) { bDSTable[ID_EWLAMP1]|=DS0_MASK; bDSTable[ID_EWLAMP1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } */ else if(CanClk.Signal.ExistFD0700&&((CanMsgFD0700.Data[0].bbyte&0xC0)==0x40)) { bDSTable[ID_EWLAMP1]|=DS0_MASK; bDSTable[ID_EWLAMP1]&=(~DS1_MASK); // bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } else { bDSTable[ID_EWLAMP1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink1]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 bDSTable[ID_EWLAMP1Blink2]&=(~(DS0_MASK|DS1_MASK)); //clear DS0 & DS1 } // if(CanMsgFEBF0B.ProceF) { VehMeter.CurBoardVal = CanMsgFEBF0B.Data[1].bbyte; CanMsgFEBF0B.ProceF = Disable; } //-----��ʻԱ�����--Ϋ����---- if(CanMsg18FEFF00.ProceF) { CanMsg18FEFF00.ProceF = Disable; } //-----��ʻԱ�����--�����---- /* if(CanMsg18FECA10.ProceF) { CanMsg18FECA10.ProceF = Disable; } */ //-----T-BOX---- if(CanMsg1CFFBE18.ProceF) { CanMsg1CFFBE18.ProceF = Disable; } //�����Զ�����㱨�� if (CanMsg5F2.ProceF == msg_full) { if (CanMsg5F2.Data[7].bbyte == 0x11) { if (ClearOdoCanTimes < 10) { ClearOdoCanTimes++; } } else { ClearOdoCanTimes = 0; } CanMsg5F2.ProceF = Disable; } } /*------------------------------------------------------------------------- * Function Name : GetConnectInfo * Description : * Input : * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void GetConnectInfo(MULCANMSG *pMulCanMsg,INT8U * pCanBuf) { INT16U wTemp; if(!pMulCanMsg->bRcvBusy) { wTemp=(((INT16U)pCanBuf[2])<<8)|pCanBuf[1]; if( wTemp <= MAX_MULCANDATALEN ) {//�����ڿɴ����ķ�Χ����. pMulCanMsg->bLength=pCanBuf[1]; pMulCanMsg->bCtrByte=pCanBuf[0]; pMulCanMsg->wPGN=(((INT16U)pCanBuf[6])<<8)|pCanBuf[5]; pMulCanMsg->bPackage=pCanBuf[3]; pMulCanMsg->bRcvInfoFlg=1; pMulCanMsg->bPrePckNum=0; } } else { //reset MulCanMsg,ʹ���ܹ����½���������Ϣ pMulCanMsg->bRcvBusy=0; pMulCanMsg->bPrePckNum=0; pMulCanMsg->bRcvInfoFlg=0; } } /*------------------------------------------------------------------------- * Function Name : GetMulDTC * Description : * Input : * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ INT8U GetMulDTC(MULCANMSG *pMulCanMsg,INT8U * pCanBuf) { if(pMulCanMsg->bRcvInfoFlg){//���յ�������ݱ���(���ӹ���) if(pMulCanMsg->wPGN==65226){ //����ECM������(���) if(pMulCanMsg->bCtrByte==32){//BAM(�㲥������Ϣ) if(pMulCanMsg->bPrePckNum+1==pCanBuf[0]){//������кŵ������� pMulCanMsg->bRcvBusy=1;//��ʼ���ն����Ϣ (void)memmove(&pMulCanMsg->bBuf[pMulCanMsg->bPrePckNum*7], &pCanBuf[1],7);//move myRxData to MulCan.DataBuf. pMulCanMsg->bPrePckNum++; if(pMulCanMsg->bPrePckNum==pMulCanMsg->bPackage){//���һ�� pMulCanMsg->bRcvInfoFlg=0;//�����Ϣ������� pMulCanMsg->bRcvBusy=0;//�����Ϣ�������,�������Խ����µ�������Ϣ(pgn60416) pMulCanMsg->bPrePckNum=0; return 1; //�����Ϣ������� } } } } } return 0; } /************************************************************************ Function Name : UpdateDtcTbl(MULCANMSG *pMulCanMsg,DTC *pDtcTable,INT8U *pDtcCnt) Engineer : bill Date : 2009 05 03 Parameters : None Returns : None Notes : ���¹��������,�����ڶ��������ĸ��� *************************************************************************/ void UpdateDtcTbl(MULCANMSG *pMulCanMsg,DTC *pDtcTable,INT8U *pDtcCnt) { INT8U i; INT32U tmp32u_Can; *pDtcCnt=(INT8U)((pMulCanMsg->bLength-2)>>2); if(*pDtcCnt>DTCTBLLEN) *pDtcCnt=DTCTBLLEN; for(i=0;i<*pDtcCnt;i++){ pDtcTable[0].Err=pMulCanMsg->bBuf[0]; pDtcTable[i].bFMI=pMulCanMsg->bBuf[4+i*4]&0x1f; tmp32u_Can=0; //GET SPN tmp32u_Can|=(pMulCanMsg->bBuf[4+i*4]>>5); tmp32u_Can<<=8; tmp32u_Can|=pMulCanMsg->bBuf[3+i*4]; tmp32u_Can<<=8; tmp32u_Can|=pMulCanMsg->bBuf[2+i*4]; pDtcTable[i].dwSPN=tmp32u_Can; } } /*------------------------------------------------------------------------- * Function Name : bsp_CANSendExtFrame glz--20170518 * Description : * Input : * Output : None * Return : dwPGN * onther : --------------------------------------------------------------------------*/ INT8U bsp_CANSendExtFrame (INT32U id,INT8U priority,INT8U length,INT8U *txdata) { INT8U txbuffer,index; INT16U cn = null; if (!CANTFLG) //Is Transmit Buffer full ? Full ( TXEx=0;) return failt; if(id == null) return failt; CANTBSEL = CANTFLG; /* Select lowest empty buffer */ txbuffer = CANTBSEL; // Backup selected buffer //==== CANTXIDR0 = (INT8U)((id & 0x1fe00000)>>21); CANTXIDR1 = (INT8U)((id & 0x001c0000)>>13); CANTXIDR1 |= (INT8U)((id & 0x00038000)>>15); CANTXIDR1 |= 0x18; CANTXIDR2 = (INT8U)((id & 0x00007f80)>>7); CANTXIDR3 = (INT8U)((id & 0x0000007f)<<1); if(length>8) length=8; for ( index=0; index < length; index++) { *(&CANTXDSR0 + index) = txdata[index]; //Load data to Tx buffer Data Segment Registers } CANTXDLR = length; /* Set Data Length Code */ CANTXTBPR = priority; /* Set Priority */ CANTFLG = txbuffer; /* Start transmission */ ////////////////glz--20170519 busoff //////////////////// if((CANTFLG & txbuffer) != txbuffer) { return 2; //failt; lzs--gai } else { CanClk.BusOffTime = T_100ms; CanClk.BusOffCn = null; return success; } /////////////////////////////////////////////////////////////// } /*------------------------------------------------------------------------- * Function Name : bsp_CANSendStdFrame clb--20231115 * Description : * Input : * Output : None * Return : dwPGN * onther : --------------------------------------------------------------------------*/ INT8U bsp_CANSendStdFrame (INT32U id, INT8U priority, INT8U length, INT8U *txdata) { INT8U txbuffer, index; if (!CANTFLG) //Is Transmit Buffer full ? Full ( TXEx=0;) return failt; if (id == null) return failt; CANTBSEL = CANTFLG; /* Select lowest empty buffer */ txbuffer = CANTBSEL; // Backup selected buffer //==== CANTXIDR0 = (INT8U)((id & 0x07F8) >> 3); CANTXIDR1 = (INT8U)((id & 0x0007) << 5); if (length>8) length=8; for ( index=0; index < length; index++) { *(&CANTXDSR0 + index) = txdata[index]; //Load data to Tx buffer Data Segment Registers } CANTXDLR = length; /* Set Data Length Code */ CANTXTBPR = priority; /* Set Priority */ CANTFLG = txbuffer; /* Start transmission */ ////////////////glz--20170519 busoff //////////////////// if ((CANTFLG & txbuffer) != 0) { return failt; } else { CanClk.BusOffTime = T_100ms; CanClk.BusOffCn = null; return success; } } /*------------------------------------------------------------------------- �������ƣ�App_SendCANMsg �� �ܣ� �� ����None ������ֵ��None ʹ��˵���� --------------------------------------------------------------------------*/ void App_SendCANMsg(void) { INT32U wTemp = null; if (Curkeyinput == KeyON) { //-------------------------------- if (CanClk.Can18FFB317Time == null) { wTemp = AccKm.ShortAccKm/10; g_txCanMsg.id = 0x18FFB317; g_txCanMsg.msg[0] = (INT8U)wTemp; g_txCanMsg.msg[1] = (INT8U)(wTemp>>8); wTemp = AccKm.LongAccKm/10; g_txCanMsg.msg[2] = (INT8U)wTemp; g_txCanMsg.msg[3] = (INT8U)(wTemp>>8); g_txCanMsg.msg[4] = (INT8U)(wTemp>>16); g_txCanMsg.msg[5] = (INT8U)(wTemp>>24); g_txCanMsg.msg[6] = 0x00; g_txCanMsg.msg[7] = 0x00; g_txCanMsg.dlc = 8; bReturn = bsp_CANSendExtFrame(g_txCanMsg.id,3,g_txCanMsg.dlc,g_txCanMsg.msg); if (bReturn != 0) CanClk.Can18FFB317Time = 488;//2.048mS�жϼ�ʱ } //ȼ���ⷢҺλ wTemp = FuelMeter.CurPosition; wTemp = (wTemp*100) / FuelMeterParamer.DashStep[FuelMeterParamer.bVirtualVal - 1]; if (CanClk.Can18FEF117Time == null) { g_txCanMsg.id = 0x18FEFC17; //1000mS g_txCanMsg.msg[0] = 0x00; g_txCanMsg.msg[1] = (INT8U)(wTemp*5/2); g_txCanMsg.msg[2] = 0x00; g_txCanMsg.msg[3] = 0x00; g_txCanMsg.msg[4] = 0x00; g_txCanMsg.msg[5] = 0x00; g_txCanMsg.msg[6] = 0x00; g_txCanMsg.msg[7] = 0x00; g_txCanMsg.dlc = 8; bReturn = bsp_CANSendExtFrame(g_txCanMsg.id,3,g_txCanMsg.dlc,g_txCanMsg.msg); if (bReturn != 0) CanClk.Can18FEF117Time = 488; //T,1000ms/2.048 } //------------------------------ if(CanClk.Can18FF0D17Time == null) { g_txCanMsg.id = 0x18FF0D17; g_txCanMsg.msg[0] = 0x00; //����ѹ���͡� if(OilPressure<60) { g_txCanMsg.msg[0] |= 0x01; } //פ�� if((bDSTable[ID_ABS]&STATEMASK) == 0x01) { //ABS_LED_P=1; g_txCanMsg.msg[0] |= 0x02; } //��ȫ�� if(AQD_LED_IN==0) { g_txCanMsg.msg[0] |= 0x04; } //Ѳ��״̬�� if(1==CanMsg18FEF100.Data[3].bbib.bib0 ) { g_txCanMsg.msg[0] |= 0x08; } g_txCanMsg.msg[1] = (INT8U)QY1Meter.CurPosition; g_txCanMsg.msg[2] = (INT8U)QY2Meter.CurPosition; g_txCanMsg.msg[3] = 0x00; g_txCanMsg.msg[4] = (INT8U)wTemp; g_txCanMsg.msg[5] = (INT8U)RevMeter.CurBoardVal; g_txCanMsg.msg[6] = (INT8U)(RevMeter.CurBoardVal>>8); g_txCanMsg.msg[7] = 0x00; if((CanMsgEECA00.Data[0].bbyte&0x30)==0x10) { //bDSTable[ID_ESLAMP]|=DS0_MASK; //bDSTable[ID_ESLAMP]&=(~DS1_MASK); g_txCanMsg.msg[7] |= 0x02; } else if((CanMsgFD0700.Data[0].bbyte&0x03)==0x01) { //bDSTable[ID_ESLAMP]|=DS0_MASK; //bDSTable[ID_ESLAMP]&=(~DS1_MASK); g_txCanMsg.msg[7] |= 0x01; } g_txCanMsg.dlc = 8; bReturn = bsp_CANSendExtFrame(g_txCanMsg.id,3,g_txCanMsg.dlc,g_txCanMsg.msg); if (bReturn != 0) CanClk.Can18FF0D17Time = 49; //100mS } //���� if(CanClk.CanCFE6CEETime == null) { g_txCanMsg.id = 0xCFE6CEE; g_txCanMsg.msg[0] = 0x00; g_txCanMsg.msg[1] = 0x00; g_txCanMsg.msg[2] = 0x00; g_txCanMsg.msg[3] = 0x00; g_txCanMsg.msg[4] = 0x00; g_txCanMsg.msg[5] = 0x00; g_txCanMsg.msg[6] = (INT8U)(CansendVeh % 256); g_txCanMsg.msg[7] = (INT8U)(CansendVeh / 256); g_txCanMsg.dlc = 8; bReturn = bsp_CANSendExtFrame(g_txCanMsg.id,3,g_txCanMsg.dlc,g_txCanMsg.msg); if (bReturn != 0) CanClk.CanCFE6CEETime = 25; //50mS } //�����ⷢ if (CanClk.Can49ETime == null) { g_txCanMsg.id = 0x49E; g_txCanMsg.msg[0] = 0; g_txCanMsg.msg[1] = 0; g_txCanMsg.msg[2] = 0; g_txCanMsg.msg[3] = 0; g_txCanMsg.msg[4] = 0; g_txCanMsg.msg[5] = 0; g_txCanMsg.msg[6] = 0; g_txCanMsg.msg[7] = 0; if (AccKm.LongAccKm < 20000) { if (OUT_2000km_Clear != one) { ; } else { if (ClearOdoCanOut) { ClearOdoCanOutCn = ClearOdoCanOut; ClearOdoCanOut--; g_txCanMsg.msg[7] |= 0x90; } else { ClearOdoCanOutCn = 0; g_txCanMsg.msg[7] |= 0x50; } } } else { if (OUT_2000km_Clear != one) { g_txCanMsg.msg[7] |= 0x40; } else { g_txCanMsg.msg[7] |= 0x50; } } g_txCanMsg.dlc = 8; bReturn = bsp_CANSendStdFrame(g_txCanMsg.id, 0x80, g_txCanMsg.dlc, g_txCanMsg.msg); if (bReturn != 0) { CanClk.Can49ETime = 488; //1000mS } else { if (g_txCanMsg.msg[7] == 0x90) { ClearOdoCanOut = ClearOdoCanOutCn; } } } } } /*------------------------------------------------------------------------- * Function Name : bsp_CAN_BusOff glz--20170519 * Description : can bus off * Input : None * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void bsp_CAN_BusOff(void) { CANMISC_BOHOLD = ClearFlag; CANTARQ_ABTRQ = CANTBSEL; } /*------------------------------------------------------------------------- * Function Name : bsp_CAN_Sleep * Description : * Input : None * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void bsp_CAN_Sleep(void) { bsp_tx_msgbuf_abort(); CANCTL0_SLPRQ = Enable; } /*------------------------------------------------------------------------- * Function Name : bsp_tx_msgbuf_abort * Description : * Input : None * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void bsp_tx_msgbuf_abort(void) { CANTARQ_ABTRQ0 = Enable; CANTARQ_ABTRQ1 = Enable; CANTARQ_ABTRQ2 = Enable; } /*------------------------------------------------------------------------- * Function Name : bsp_CAN_SleepRelease * Description : * Input : None * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void bsp_CAN_SleepRelease(void) { CANCTL0_SLPRQ = Disable; } /*------------------------------------------------------------------------- * Function Name : App_ChcekSleep * Description : * Input : None * Output : None * Return : None * onther : --------------------------------------------------------------------------*/ void App_ChcekSleep(void) { if((CANCTL0_SLPRQ) && (CANCTL1_SLPAK)) { bcanbussleep = 1; } else { bcanbussleep = 0; } } #pragma CODE_SEG DEFAULT