📄 sub_mc33984.h
字号:
sys_data_type MC33984_fault1,MC33984_fault2,MC33984_fault3,MC33984_fault4;
unsigned char fault1_count[8],fault2_count[8],fault3_count[8],fault4_count[5]; //故障清除计数器
sys_data_type _SUB_FLAGS1;
#define DOOR_WAKE _SUB_FLAGS1.Bit.BIT0
#define door_flag _SUB_FLAGS1.Bit.BIT1
#define door_close _SUB_FLAGS1.Bit.BIT2
#define door_open _SUB_FLAGS1.Bit.BIT3
unsigned char door_count=0;
//////////////////////////////////////////////////////////////
//定义: void FAULT_STA(void) //
//描述: 判断故障,根据故障组织报文 //
//////////////////////////////////////////////////////////////
void FAULT_STA(void)
{
if(fault_ok) //已检测
{
if(MC33984_STATUS0.Bit.BIT0==0||MC33984_STATUS0.Bit.BIT7==1||MC33984_STATUS0.Byte==0x01||(MC33984_STATUS0.Bit.BIT4&&MC33984_STATUS0.Bit.BIT5)||((MC33984_STATUS0.Bit.BIT4||MC33984_STATUS0.Bit.BIT5)&&MC33984_STATUS0.Bit.BIT3)) MC33984_STATUS0.Byte=0x00;
//故障位为0(无故障)、通道位为1(通道错误)、故障码为0x01(无故障现象)、高过流与低过流并存、短路与开路并存,通道0检测无效
if(MC33984_STATUS1.Bit.BIT0==0||MC33984_STATUS1.Bit.BIT7==0||MC33984_STATUS1.Byte==0x81||(MC33984_STATUS1.Bit.BIT4&&MC33984_STATUS1.Bit.BIT5)||((MC33984_STATUS1.Bit.BIT4||MC33984_STATUS1.Bit.BIT5)&&MC33984_STATUS1.Bit.BIT3)) MC33984_STATUS1.Byte=0x80;
//故障位为0(无故障)、通道位为0(通道错误)、故障码为0x81(无故障现象)、高过流与低过流并存、短路与开路并存,通道1检测无效
if(MC33984_STATUS0.Bit.BIT0) //HS0有故障?
{
if(MC33984_STATUS0.Bit.BIT3) //开路
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT0=1;CAN_STR0.Bit.BIT1=0;MC33984_fault1.Bit.BIT0=1;break;} //侧左转向灯1
case 1: {CAN_STR0.Bit.BIT4=1;CAN_STR0.Bit.BIT5=0;MC33984_fault1.Bit.BIT2=1;break;} //侧右转向灯1
case 2: {CAN_STR1.Bit.BIT0=1;CAN_STR1.Bit.BIT1=0;MC33984_fault1.Bit.BIT4=1;break;} //左标志灯1
case 3: {CAN_STR1.Bit.BIT4=1;CAN_STR1.Bit.BIT5=0;MC33984_fault1.Bit.BIT6=1;break;} //左标志灯3
case 4: {CAN_STR2.Bit.BIT0=1;CAN_STR2.Bit.BIT1=0;MC33984_fault2.Bit.BIT0=1;break;} //右标志灯2
case 5: {CAN_STR2.Bit.BIT4=1;CAN_STR2.Bit.BIT5=0;MC33984_fault2.Bit.BIT2=1;break;} //左轮边灯
case 6: {CAN_STR3.Bit.BIT0=1;CAN_STR3.Bit.BIT1=0;MC33984_fault2.Bit.BIT4=1;break;} //左行李仓灯1
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=0;MC33984_fault2.Bit.BIT6=1;break;} //左行李仓灯3
case 8: {CAN_STR4.Bit.BIT0=1;CAN_STR4.Bit.BIT1=0;MC33984_fault3.Bit.BIT0=1;break;} //右行李仓灯1
case 9: {CAN_STR4.Bit.BIT4=1;CAN_STR4.Bit.BIT5=0;MC33984_fault3.Bit.BIT2=1;break;} //右行李仓灯3
case 10: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=0;MC33984_fault3.Bit.BIT4=1;break;} //前门底踏步灯
case 11: {CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=0;MC33984_fault3.Bit.BIT6=1;break;} //屈膝电磁阀1
case 12: {CAN_STR6.Bit.BIT0=1;CAN_STR6.Bit.BIT1=0;MC33984_fault4.Bit.BIT0=1;break;} //气喇叭
case 13: {CAN_STR6.Bit.BIT4=1;CAN_STR6.Bit.BIT5=0;MC33984_fault4.Bit.BIT2=1;break;} //后门电磁阀开线
case 14: {CAN_STR7.Bit.BIT0=1;CAN_STR7.Bit.BIT1=0;MC33984_fault4.Bit.BIT4=1;break;} //卫生间电源
}
}
else if(MC33984_STATUS0.Bit.BIT4||MC33984_STATUS0.Bit.BIT5) //短路
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT0=0;CAN_STR0.Bit.BIT1=1;MC33984_fault1.Bit.BIT0=1;break;} //侧左转向灯1
case 1: {CAN_STR0.Bit.BIT4=0;CAN_STR0.Bit.BIT5=1;MC33984_fault1.Bit.BIT2=1;break;} //侧右转向灯1
case 2: {CAN_STR1.Bit.BIT0=0;CAN_STR1.Bit.BIT1=1;MC33984_fault1.Bit.BIT4=1;break;} //左标志灯1
case 3: {CAN_STR1.Bit.BIT4=0;CAN_STR1.Bit.BIT5=1;MC33984_fault1.Bit.BIT6=1;break;} //左标志灯3
case 4: {CAN_STR2.Bit.BIT0=0;CAN_STR2.Bit.BIT1=1;MC33984_fault2.Bit.BIT0=1;break;} //右标志灯2
case 5: {CAN_STR2.Bit.BIT4=0;CAN_STR2.Bit.BIT5=1;MC33984_fault2.Bit.BIT2=1;break;} //左轮边灯
case 6: {CAN_STR3.Bit.BIT0=0;CAN_STR3.Bit.BIT1=1;MC33984_fault2.Bit.BIT4=1;break;} //左行李仓灯1
case 7: {CAN_STR3.Bit.BIT4=0;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //左行李仓灯3
case 8: {CAN_STR4.Bit.BIT0=0;CAN_STR4.Bit.BIT1=1;MC33984_fault3.Bit.BIT0=1;break;} //右行李仓灯1
case 9: {CAN_STR4.Bit.BIT4=0;CAN_STR4.Bit.BIT5=1;MC33984_fault3.Bit.BIT2=1;break;} //右行李仓灯3
case 10: {CAN_STR5.Bit.BIT0=0;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //前门底踏步灯
case 11: {CAN_STR5.Bit.BIT4=0;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT6=1;break;} //屈膝电磁阀1
case 12: {CAN_STR6.Bit.BIT0=0;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT0=1;break;} //气喇叭
case 13: {CAN_STR6.Bit.BIT4=0;CAN_STR6.Bit.BIT5=1;MC33984_fault4.Bit.BIT2=1;break;} //后门电磁阀开线
case 14: {CAN_STR7.Bit.BIT0=0;CAN_STR7.Bit.BIT1=1;MC33984_fault4.Bit.BIT4=1;break;} //卫生间电源
}
}
else if(MC33984_STATUS0.Bit.BIT6) //过热
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT0=1;CAN_STR0.Bit.BIT1=1;MC33984_fault1.Bit.BIT0=1;break;} //侧左转向灯1
case 1: {CAN_STR0.Bit.BIT4=1;CAN_STR0.Bit.BIT5=1;MC33984_fault1.Bit.BIT2=1;break;} //侧右转向灯1
case 2: {CAN_STR1.Bit.BIT0=1;CAN_STR1.Bit.BIT1=1;MC33984_fault1.Bit.BIT4=1;break;} //左标志灯1
case 3: {CAN_STR1.Bit.BIT4=1;CAN_STR1.Bit.BIT5=1;MC33984_fault1.Bit.BIT6=1;break;} //左标志灯3
case 4: {CAN_STR2.Bit.BIT0=1;CAN_STR2.Bit.BIT1=1;MC33984_fault2.Bit.BIT0=1;break;} //右标志灯2
case 5: {CAN_STR2.Bit.BIT4=1;CAN_STR2.Bit.BIT5=1;MC33984_fault2.Bit.BIT2=1;break;} //左轮边灯
case 6: {CAN_STR3.Bit.BIT0=1;CAN_STR3.Bit.BIT1=1;MC33984_fault2.Bit.BIT4=1;break;} //左行李仓灯1
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //左行李仓灯3
case 8: {CAN_STR4.Bit.BIT0=1;CAN_STR4.Bit.BIT1=1;MC33984_fault3.Bit.BIT0=1;break;} //右行李仓灯1
case 9: {CAN_STR4.Bit.BIT4=1;CAN_STR4.Bit.BIT5=1;MC33984_fault3.Bit.BIT2=1;break;} //右行李仓灯3
case 10: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //前门底踏步灯
case 11: {CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT6=1;break;} //屈膝电磁阀1
case 12: {CAN_STR6.Bit.BIT0=1;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT0=1;break;} //气喇叭
case 13: {CAN_STR6.Bit.BIT4=1;CAN_STR6.Bit.BIT5=1;MC33984_fault4.Bit.BIT2=1;break;} //后门电磁阀开线
case 14: {CAN_STR7.Bit.BIT0=1;CAN_STR7.Bit.BIT1=1;MC33984_fault4.Bit.BIT4=1;break;} //卫生间电源
}
}
}
if(MC33984_STATUS1.Bit.BIT0) //HS1有故障?
{
if(MC33984_STATUS1.Bit.BIT3) //开路
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT2=1;CAN_STR0.Bit.BIT3=0;MC33984_fault1.Bit.BIT1=1;break;} //侧左转向灯2
case 1: {CAN_STR0.Bit.BIT6=1;CAN_STR0.Bit.BIT7=0;MC33984_fault1.Bit.BIT3=1;break;} //侧右转向灯2
case 2: {CAN_STR1.Bit.BIT2=1;CAN_STR1.Bit.BIT3=0;MC33984_fault1.Bit.BIT5=1;break;} //左标志灯2
case 3: {CAN_STR1.Bit.BIT6=1;CAN_STR1.Bit.BIT7=0;MC33984_fault1.Bit.BIT7=1;break;} //右标志灯1
case 4: {CAN_STR2.Bit.BIT2=1;CAN_STR2.Bit.BIT3=0;MC33984_fault2.Bit.BIT1=1;break;} //右标志灯3
case 5: {CAN_STR2.Bit.BIT6=1;CAN_STR2.Bit.BIT7=0;MC33984_fault2.Bit.BIT3=1;break;} //右轮边灯
case 6: {CAN_STR3.Bit.BIT2=1;CAN_STR3.Bit.BIT3=0;MC33984_fault2.Bit.BIT5=1;break;} //左行李仓灯2
case 7: {CAN_STR3.Bit.BIT6=1;CAN_STR3.Bit.BIT7=0;MC33984_fault2.Bit.BIT7=1;break;} //左行李仓灯4
case 8: {CAN_STR4.Bit.BIT2=1;CAN_STR4.Bit.BIT3=0;MC33984_fault3.Bit.BIT1=1;break;} //右行李仓灯2
case 9: {CAN_STR4.Bit.BIT6=1;CAN_STR4.Bit.BIT7=0;MC33984_fault3.Bit.BIT3=1;break;} //右行李仓灯4
case 10: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=0;MC33984_fault3.Bit.BIT5=1;break;} //中门底踏步灯
case 11: {CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=0;MC33984_fault3.Bit.BIT7=1;break;} //屈膝电磁阀2
case 12: {CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=0;MC33984_fault4.Bit.BIT1=1;break;} //电喇叭
case 13: {CAN_STR6.Bit.BIT6=1;CAN_STR6.Bit.BIT7=0;MC33984_fault4.Bit.BIT3=1;break;} //后门电磁阀关线
case 14: break;
}
}
else if(MC33984_STATUS1.Bit.BIT4||MC33984_STATUS1.Bit.BIT5) //短路
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT2=0;CAN_STR0.Bit.BIT3=1;MC33984_fault1.Bit.BIT1=1;break;} //侧左转向灯2
case 1: {CAN_STR0.Bit.BIT6=0;CAN_STR0.Bit.BIT7=1;MC33984_fault1.Bit.BIT3=1;break;} //侧右转向灯2
case 2: {CAN_STR1.Bit.BIT2=0;CAN_STR1.Bit.BIT3=1;MC33984_fault1.Bit.BIT5=1;break;} //左标志灯2
case 3: {CAN_STR1.Bit.BIT6=0;CAN_STR1.Bit.BIT7=1;MC33984_fault1.Bit.BIT7=1;break;} //右标志灯1
case 4: {CAN_STR2.Bit.BIT2=0;CAN_STR2.Bit.BIT3=1;MC33984_fault2.Bit.BIT1=1;break;} //右标志灯3
case 5: {CAN_STR2.Bit.BIT6=0;CAN_STR2.Bit.BIT7=1;MC33984_fault2.Bit.BIT3=1;break;} //右轮边灯
case 6: {CAN_STR3.Bit.BIT2=0;CAN_STR3.Bit.BIT3=1;MC33984_fault2.Bit.BIT5=1;break;} //左行李仓灯2
case 7: {CAN_STR3.Bit.BIT6=0;CAN_STR3.Bit.BIT7=1;MC33984_fault2.Bit.BIT7=1;break;} //左行李仓灯4
case 8: {CAN_STR4.Bit.BIT2=0;CAN_STR4.Bit.BIT3=1;MC33984_fault3.Bit.BIT1=1;break;} //右行李仓灯2
case 9: {CAN_STR4.Bit.BIT6=0;CAN_STR4.Bit.BIT7=1;MC33984_fault3.Bit.BIT3=1;break;} //右行李仓灯4
case 10: {CAN_STR5.Bit.BIT2=0;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=1;break;} //中门底踏步灯
case 11: {CAN_STR5.Bit.BIT6=0;CAN_STR5.Bit.BIT7=1;MC33984_fault3.Bit.BIT7=1;break;} //屈膝电磁阀2
case 12: {CAN_STR6.Bit.BIT2=0;CAN_STR6.Bit.BIT3=1;MC33984_fault4.Bit.BIT1=1;break;} //电喇叭
case 13: {CAN_STR6.Bit.BIT6=0;CAN_STR6.Bit.BIT7=1;MC33984_fault4.Bit.BIT3=1;break;} //后门电磁阀关线
case 14: break;
}
}
else if(MC33984_STATUS1.Bit.BIT6) //过热
{
switch(fault_count)
{
case 0: {CAN_STR0.Bit.BIT2=1;CAN_STR0.Bit.BIT3=1;MC33984_fault1.Bit.BIT1=1;break;} //侧左转向灯2
case 1: {CAN_STR0.Bit.BIT6=1;CAN_STR0.Bit.BIT7=1;MC33984_fault1.Bit.BIT3=1;break;} //侧右转向灯2
case 2: {CAN_STR1.Bit.BIT2=1;CAN_STR1.Bit.BIT3=1;MC33984_fault1.Bit.BIT5=1;break;} //左标志灯2
case 3: {CAN_STR1.Bit.BIT6=1;CAN_STR1.Bit.BIT7=1;MC33984_fault1.Bit.BIT7=1;break;} //右标志灯1
case 4: {CAN_STR2.Bit.BIT2=1;CAN_STR2.Bit.BIT3=1;MC33984_fault2.Bit.BIT1=1;break;} //右标志灯3
case 5: {CAN_STR2.Bit.BIT6=1;CAN_STR2.Bit.BIT7=1;MC33984_fault2.Bit.BIT3=1;break;} //右轮边灯
case 6: {CAN_STR3.Bit.BIT2=1;CAN_STR3.Bit.BIT3=1;MC33984_fault2.Bit.BIT5=1;break;} //左行李仓灯2
case 7: {CAN_STR3.Bit.BIT6=1;CAN_STR3.Bit.BIT7=1;MC33984_fault2.Bit.BIT7=1;break;} //左行李仓灯4
case 8: {CAN_STR4.Bit.BIT2=1;CAN_STR4.Bit.BIT3=1;MC33984_fault3.Bit.BIT1=1;break;} //右行李仓灯2
case 9: {CAN_STR4.Bit.BIT6=1;CAN_STR4.Bit.BIT7=1;MC33984_fault3.Bit.BIT3=1;break;} //右行李仓灯4
case 10: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=1;break;} //中门底踏步灯
case 11: {CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=1;MC33984_fault3.Bit.BIT7=1;break;} //屈膝电磁阀2
case 12: {CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=1;MC33984_fault4.Bit.BIT1=1;break;} //电喇叭
case 13: {CAN_STR6.Bit.BIT6=1;CAN_STR6.Bit.BIT7=1;MC33984_fault4.Bit.BIT3=1;break;} //后门电磁阀关线
case 14: break;
}
}
}
fault_count++; //故障计数器+1
if(fault_count>14) fault_count=0; //故障计数器最大为14
fault_ok=0; //清故障检测标志
}
}
/////////////////////////////////////////////////////////////
//定义: void OUT_STA(void)
//描述: 本地命令,执行操作
/////////////////////////////////////////////////////////////
void OUT_STA(void)
{
//左行李仓灯开关1
if(SGL_status.Bit.BIT2&&MC33984_fault2.Bit.BIT4==0) MC33984_OUT[6].Bit.BIT0=1; //无故障开 左行李仓灯1
else MC33984_OUT[6].Bit.BIT0=0;
//左行李仓灯开关2
if(SGL_status.Bit.BIT3&&MC33984_fault2.Bit.BIT5==0) MC33984_OUT[6].Bit.BIT2=1; //无故障开 左行李仓灯2
else MC33984_OUT[6].Bit.BIT2=0;
//左行李仓灯开关3
if(SGL_status.Bit.BIT4&&MC33984_fault2.Bit.BIT6==0) MC33984_OUT[7].Bit.BIT0=1; //无故障开 左行李仓灯3
else MC33984_OUT[7].Bit.BIT0=0;
//左行李仓灯开关4
if(SGL_status.Bit.BIT5&&MC33984_fault2.Bit.BIT7==0) MC33984_OUT[7].Bit.BIT2=1; //无故障开 左行李仓灯4
else MC33984_OUT[7].Bit.BIT2=0;
//右行李仓灯开关1
if(SGL_status.Bit.BIT6&&MC33984_fault3.Bit.BIT0==0) MC33984_OUT[8].Bit.BIT0=1; //无故障开 右行李仓灯1
else MC33984_OUT[8].Bit.BIT0=0;
//右行李仓灯开关2
if(SGL_status.Bit.BIT7&&MC33984_fault3.Bit.BIT1==0) MC33984_OUT[8].Bit.BIT2=1; //无故障开 右行李仓灯2
else MC33984_OUT[8].Bit.BIT2=0;
//右行李仓灯开关3
if(SGH_status.Bit.BIT0&&MC33984_fault3.Bit.BIT2==0) MC33984_OUT[9].Bit.BIT0=1; //无故障开 右行李仓灯3
else MC33984_OUT[9].Bit.BIT0=0;
//右行李仓灯开关4
if(SGH_status.Bit.BIT1&&MC33984_fault3.Bit.BIT3==0) MC33984_OUT[9].Bit.BIT2=1; //无故障开 右行李仓灯4
else MC33984_OUT[9].Bit.BIT2=0;
//后门防夹开关
if(SP_status.Bit.BIT0==0&&MC33984_fault4.Bit.BIT2==0) MC33984_OUT[13].Byte=0x1b;//无故障开 后门电磁阀开线
else if(door_flag==0||MC33984_fault4.Bit.BIT2) MC33984_OUT[13].Byte=0x1a;
}
/////////////////////////////////////////////////////////////
//定义: void DOOR_OUT(void)
//描述: 接收仪表CAN命令,执行后门操作
/////////////////////////////////////////////////////////////
void DOOR_OUT(void)
{
//后门开关-开
if(CAN_YB4.Bit.BIT0==1&&CAN_YB4.Bit.BIT1==0&&door_open)
{
door_open=0;
door_close=1;
door_count=0;
door_flag=1;
if(MC33984_fault4.Bit.BIT2) MC33984_OUT[13].Byte=0x1a; //无故障开 后门电磁阀开线
else MC33984_OUT[13].Byte=0x1b;
}
else if(CAN_YB4.Bit.BIT1==1&&CAN_YB4.Bit.BIT0==0&&door_close)
{
door_close=0;
door_open=1;
if(MC33984_fault4.Bit.BIT3) MC33984_OUT[13].Byte=0x1a; //无故障开 后门电磁阀关线
else MC33984_OUT[13].Byte=0x1e;
door_count=0;
door_flag=1;
}
}
/////////////////////////////////////////////////////////////
//定义: void CAN_YB(void)
//描述: 接收仪表CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_YB(void)
{
//点火锁ON档
if(CAN_YB0.Bit.BIT0==1&&CAN_YB0.Bit.BIT1==0&&MC33984_fault4.Bit.BIT4==0) MC33984_OUT[14].Bit.BIT0=1; //无故障开 卫生间电源
else MC33984_OUT[14].Bit.BIT0=0;
//左转向
if(CAN_YB1.Bit.BIT6==1&&CAN_YB1.Bit.BIT7==0)
{
if(MC33984_fault1.Bit.BIT0) MC33984_OUT[0].Bit.BIT0=0; //无故障开 侧左转向灯1
else MC33984_OUT[0].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT1) MC33984_OUT[0].Bit.BIT2=0; //无故障开 侧左转向灯2
else MC33984_OUT[0].Bit.BIT2=1;
}
else MC33984_OUT[0].Byte=0x1a;
//右转向
if(CAN_YB2.Bit.BIT0==1&&CAN_YB2.Bit.BIT1==0)
{
if(MC33984_fault1.Bit.BIT2) MC33984_OUT[1].Bit.BIT0=0; //无故障开 侧右转向灯1
else MC33984_OUT[1].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT3) MC33984_OUT[1].Bit.BIT2=0; //无故障开 侧右转向灯2
else MC33984_OUT[1].Bit.BIT2=1;
}
else MC33984_OUT[1].Byte=0x1a;
//小灯一档、前雾灯开关
if((CAN_YB2.Bit.BIT4==1&&CAN_YB2.Bit.BIT5==0)||(CAN_YB3.Bit.BIT2==1&&CAN_YB3.Bit.BIT3==0))
{
if(MC33984_fault1.Bit.BIT4) MC33984_OUT[2].Bit.BIT0=0; //无故障开 左标志灯1
else MC33984_OUT[2].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT5) MC33984_OUT[2].Bit.BIT2=0; //无故障开 左标志灯2
else MC33984_OUT[2].Bit.BIT2=1;
if(MC33984_fault1.Bit.BIT6) MC33984_OUT[3].Bit.BIT0=0; //无故障开 左标志灯3
else MC33984_OUT[3].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT7) MC33984_OUT[3].Bit.BIT2=0; //无故障开 右标志灯1
else MC33984_OUT[3].Bit.BIT2=1;
if(MC33984_fault2.Bit.BIT0) MC33984_OUT[4].Bit.BIT0=0; //无故障开 右标志灯2
else MC33984_OUT[4].Bit.BIT0=1;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0; //无故障开 右标志灯3
else MC33984_OUT[4].Bit.BIT2=1;
if(MC33984_fault2.Bit.BIT2) MC33984_OUT[5].Bit.BIT0=0; //无故障开 左轮边灯
else MC33984_OUT[5].Bit.BIT0=1;
if(MC33984_fault2.Bit.BIT3) MC33984_OUT[5].Bit.BIT2=0; //无故障开 右轮边灯
else MC33984_OUT[5].Bit.BIT2=1;
//踏步灯开关
if(CAN_QKZC4.Bit.BIT0==1&&CAN_QKZC4.Bit.BIT1==0&&MC33984_fault3.Bit.BIT4==0) MC33984_OUT[10].Bit.BIT0=1; //无故障开 前门底踏步灯
else MC33984_OUT[10].Bit.BIT0=0;
//后踏步灯开关
if(SP_status.Bit.BIT1==0&&MC33984_fault3.Bit.BIT5==0) MC33984_OUT[10].Bit.BIT2=1; //无故障开 中门底踏步灯
else MC33984_OUT[10].Bit.BIT2=0;
}
else
{
MC33984_OUT[2].Byte=0x1a;
MC33984_OUT[3].Byte=0x1a;
MC33984_OUT[4].Byte=0x1a;
MC33984_OUT[5].Byte=0x1a;
MC33984_OUT[10].Byte=0x1a;
}
//喇叭开关
if(CAN_YB2.Bit.BIT2==1&&CAN_YB2.Bit.BIT3==0)
{
//电/气喇叭转换开关
if(CAN_QKYC3.Bit.BIT2==1&&CAN_QKYC3.Bit.BIT3==0&&MC33984_fault4.Bit.BIT0==0) MC33984_OUT[12].Byte=0x1b; //无故障开 气喇叭
else if(CAN_QKYC3.Bit.BIT2==0&&CAN_QKYC3.Bit.BIT3==0&&MC33984_fault4.Bit.BIT1==0) MC33984_OUT[12].Byte=0x1e; //无故障开 电喇叭
else MC33984_OUT[12].Byte=0x1a;
}
else MC33984_OUT[12].Byte=0x1a;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_QKYC(void)
//描述: 接收仪表CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_QKYC(void)
{
//屈膝开关
if(CAN_QKYC1.Bit.BIT6==1&&CAN_QKYC1.Bit.BIT7==0)
{
if(MC33984_fault3.Bit.BIT6) MC33984_OUT[11].Bit.BIT0=0; //无故障开 屈膝电磁阀1
else MC33984_OUT[11].Bit.BIT0=1;
if(MC33984_fault3.Bit.BIT7) MC33984_OUT[11].Bit.BIT2=0; //无故障开 屈膝电磁阀2
else MC33984_OUT[11].Bit.BIT2=1;
}
else MC33984_OUT[11].Byte=0x1a;
}
//////////////////////////////////////////////////////////////
//定义: void FAULT_OFF(void) //
//描述: 五秒后自动清除MC33984故障 //
//////////////////////////////////////////////////////////////
void FAULT_OFF(void)
{
if(MC33984_fault1.Bit.BIT0) MC33984_OUT[0].Bit.BIT0=0;
if(MC33984_fault1.Bit.BIT1) MC33984_OUT[0].Bit.BIT2=0;
if(MC33984_fault1.Bit.BIT2) MC33984_OUT[1].Bit.BIT0=0;
if(MC33984_fault1.Bit.BIT3) MC33984_OUT[1].Bit.BIT2=0;
if(MC33984_fault1.Bit.BIT4) MC33984_OUT[2].Bit.BIT0=0;
if(MC33984_fault1.Bit.BIT5) MC33984_OUT[2].Bit.BIT2=0;
if(MC33984_fault1.Bit.BIT6) MC33984_OUT[3].Bit.BIT0=0;
if(MC33984_fault1.Bit.BIT7) MC33984_OUT[3].Bit.BIT2=0;
if(MC33984_fault2.Bit.BIT0) MC33984_OUT[4].Bit.BIT0=0;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0;
if(MC33984_fault2.Bit.BIT2) MC33984_OUT[5].Bit.BIT0=0;
if(MC33984_fault2.Bit.BIT3) MC33984_OUT[5].Bit.BIT2=0;
if(MC33984_fault2.Bit.BIT4) MC33984_OUT[6].Bit.BIT0=0;
if(MC33984_fault2.Bit.BIT5) MC33984_OUT[6].Bit.BIT2=0;
if(MC33984_fault2.Bit.BIT6) MC33984_OUT[7].Bit.BIT0=0;
if(MC33984_fault2.Bit.BIT7) MC33984_OUT[7].Bit.BIT2=0;
if(MC33984_fault3.Bit.BIT0) MC33984_OUT[8].Bit.BIT0=0;
if(MC33984_fault3.Bit.BIT1) MC33984_OUT[8].Bit.BIT2=0;
if(MC33984_fault3.Bit.BIT2) MC33984_OUT[9].Bit.BIT0=0;
if(MC33984_fault3.Bit.BIT3) MC33984_OUT[9].Bit.BIT2=0;
if(MC33984_fault3.Bit.BIT4) MC33984_OUT[10].Bit.BIT0=0;
if(MC33984_fault3.Bit.BIT5) MC33984_OUT[10].Bit.BIT2=0;
if(MC33984_fault3.Bit.BIT6) MC33984_OUT[11].Bit.BIT0=0;
if(MC33984_fault3.Bit.BIT7) MC33984_OUT[11].Bit.BIT2=0;
if(MC33984_fault4.Bit.BIT0) MC33984_OUT[12].Bit.BIT0=0;
if(MC33984_fault4.Bit.BIT1) MC33984_OUT[12].Bit.BIT2=0;
if(MC33984_fault4.Bit.BIT2) MC33984_OUT[13].Bit.BIT0=0;
if(MC33984_fault4.Bit.BIT3) MC33984_OUT[13].Bit.BIT2=0;
if(MC33984_fault4.Bit.BIT4) MC33984_OUT[14].Bit.BIT0=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -