📄 sub_mc33984.h
字号:
#define choke_zheng PTD_PTD4 //熄火器正
#define choke_fan PTD_PTD6 //熄火器反
sys_data_type _SUB_FLAGS1;
#define back_start _SUB_FLAGS1.Bit.BIT0 //后启动标志
#define chokez_flag _SUB_FLAGS1.Bit.BIT1 //熄火器标志
#define chokef_flag _SUB_FLAGS1.Bit.BIT2
sys_data_type MC33984_fault1,MC33984_fault2,MC33984_fault3,MC33984_fault4;
unsigned char fault1_count[8],fault2_count[8],fault3_count[8],fault4_count[2]; //故障清除计数器
unsigned char start_count=0; //启动继电器工作时间计数器
unsigned char back_start_count=0; //后启动 启动继电器工作时间计数器
unsigned char choke_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;} //排气制动电磁阀
case 1: {CAN_STR0.Bit.BIT4=1;CAN_STR0.Bit.BIT5=0;MC33984_fault1.Bit.BIT2=1;break;} //左倒车灯
case 2: {CAN_STR1.Bit.BIT0=1;CAN_STR1.Bit.BIT1=0;MC33984_fault1.Bit.BIT4=1;break;} //左后雾灯
case 3: {CAN_STR1.Bit.BIT4=1;CAN_STR1.Bit.BIT5=0;MC33984_fault1.Bit.BIT6=1;break;} //电磁开关
case 4: {CAN_STR2.Bit.BIT0=1;CAN_STR2.Bit.BIT1=0;MC33984_fault2.Bit.BIT0=1;break;} //左后小灯
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;} //牌照灯组
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=0;MC33984_fault2.Bit.BIT6=1;break;} //左标志灯4
case 8: {CAN_STR4.Bit.BIT0=1;CAN_STR4.Bit.BIT1=0;MC33984_fault3.Bit.BIT0=1;break;} //右标志灯4
case 9: {CAN_STR4.Bit.BIT4=1;CAN_STR4.Bit.BIT5=0;MC33984_fault3.Bit.BIT2=1;break;} //左刹车灯
case 10: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=0;MC33984_fault3.Bit.BIT4=1;break;} //后左转向灯
case 11: break;//{CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=0;MC33984_fault3.Bit.BIT6=1;break;} //熄火电磁阀
case 12: break; //MC33984_fault4.Bit.BIT0=1
case 13: break; //MC33984_fault4.Bit.BIT2=1
case 14: break;//{CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=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;} //排气制动电磁阀
case 1: {CAN_STR0.Bit.BIT4=0;CAN_STR0.Bit.BIT5=1;MC33984_fault1.Bit.BIT2=1;break;} //左倒车灯
case 2: {CAN_STR1.Bit.BIT0=0;CAN_STR1.Bit.BIT1=1;MC33984_fault1.Bit.BIT4=1;break;} //左后雾灯
case 3: {CAN_STR1.Bit.BIT4=0;CAN_STR1.Bit.BIT5=1;MC33984_fault1.Bit.BIT6=1;break;} //电磁开关
case 4: {CAN_STR2.Bit.BIT0=0;CAN_STR2.Bit.BIT1=1;MC33984_fault2.Bit.BIT0=1;break;} //左后小灯
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;} //牌照灯组
case 7: {CAN_STR3.Bit.BIT4=0;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //左标志灯4
case 8: {CAN_STR4.Bit.BIT0=0;CAN_STR4.Bit.BIT1=1;MC33984_fault3.Bit.BIT0=1;break;} //右标志灯4
case 9: {CAN_STR4.Bit.BIT4=0;CAN_STR4.Bit.BIT5=1;MC33984_fault3.Bit.BIT2=1;break;} //左刹车灯
case 10: {CAN_STR5.Bit.BIT0=0;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //后左转向灯
case 11: break;//{CAN_STR6.Bit.BIT2=0;CAN_STR6.Bit.BIT3=1;MC33984_fault3.Bit.BIT6=1;break;} //熄火电磁阀
case 12: break; //MC33984_fault4.Bit.BIT0=1
case 13: break; //MC33984_fault4.Bit.BIT2=1
case 14: break;//{CAN_STR5.Bit.BIT6=0;CAN_STR5.Bit.BIT7=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;} //排气制动电磁阀
case 1: {CAN_STR0.Bit.BIT4=1;CAN_STR0.Bit.BIT5=1;MC33984_fault1.Bit.BIT2=1;break;} //左倒车灯
case 2: {CAN_STR1.Bit.BIT0=1;CAN_STR1.Bit.BIT1=1;MC33984_fault1.Bit.BIT4=1;break;} //左后雾灯
case 3: {CAN_STR1.Bit.BIT4=1;CAN_STR1.Bit.BIT5=1;MC33984_fault1.Bit.BIT6=1;break;} //电磁开关
case 4: {CAN_STR2.Bit.BIT0=1;CAN_STR2.Bit.BIT1=1;MC33984_fault2.Bit.BIT0=1;break;} //左后小灯
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;} //牌照灯组
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //左标志灯4
case 8: {CAN_STR4.Bit.BIT0=1;CAN_STR4.Bit.BIT1=1;MC33984_fault3.Bit.BIT0=1;break;} //右标志灯4
case 9: {CAN_STR4.Bit.BIT4=1;CAN_STR4.Bit.BIT5=1;MC33984_fault3.Bit.BIT2=1;break;} //左刹车灯
case 10: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //后左转向灯
case 11: break;//{CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=1;MC33984_fault3.Bit.BIT6=1;break;} //熄火电磁阀
case 12: break; //MC33984_fault4.Bit.BIT0=1
case 13: break; //MC33984_fault4.Bit.BIT2=1
case 14: break;//{CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=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;} //发动机仓灯
case 1: {CAN_STR0.Bit.BIT6=1;CAN_STR0.Bit.BIT7=0;MC33984_fault1.Bit.BIT3=1;break;} //右倒车灯
case 2: {CAN_STR1.Bit.BIT2=1;CAN_STR1.Bit.BIT3=0;MC33984_fault1.Bit.BIT5=1;break;} //右后雾灯
case 3: {CAN_STR1.Bit.BIT6=1;CAN_STR1.Bit.BIT7=0;MC33984_fault1.Bit.BIT7=1;break;} //预热继电器
case 4: {CAN_STR2.Bit.BIT2=1;CAN_STR2.Bit.BIT3=0;MC33984_fault2.Bit.BIT1=1;break;} //右后小灯
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;} //空调电容箱电源
case 7: {CAN_STR3.Bit.BIT6=1;CAN_STR3.Bit.BIT7=0;MC33984_fault2.Bit.BIT7=1;break;} //左标志灯5
case 8: {CAN_STR4.Bit.BIT2=1;CAN_STR4.Bit.BIT3=0;MC33984_fault3.Bit.BIT1=1;break;} //右标志灯5
case 9: {CAN_STR4.Bit.BIT6=1;CAN_STR4.Bit.BIT7=0;MC33984_fault3.Bit.BIT3=1;break;} //右刹车灯
case 10: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=0;MC33984_fault3.Bit.BIT5=1;break;} //后右转向灯
case 11: break;//{CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=0;MC33984_fault3.Bit.BIT7=1;break;} //车速传感器电源
case 12: break; //MC33984_fault4.Bit.BIT1=1
case 13: break; //MC33984_fault4.Bit.BIT3=1
case 14: break;//{CAN_STR6.Bit.BIT0=1;CAN_STR6.Bit.BIT1=0;MC33984_fault4.Bit.BIT5=1;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;} //发动机仓灯
case 1: {CAN_STR0.Bit.BIT6=0;CAN_STR0.Bit.BIT7=1;MC33984_fault1.Bit.BIT3=1;break;} //右倒车灯
case 2: {CAN_STR1.Bit.BIT2=0;CAN_STR1.Bit.BIT3=1;MC33984_fault1.Bit.BIT5=1;break;} //右后雾灯
case 3: {CAN_STR1.Bit.BIT6=0;CAN_STR1.Bit.BIT7=1;MC33984_fault1.Bit.BIT7=1;break;} //预热继电器
case 4: {CAN_STR2.Bit.BIT2=0;CAN_STR2.Bit.BIT3=1;MC33984_fault2.Bit.BIT1=1;break;} //右后小灯
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;} //空调电容箱电源
case 7: {CAN_STR3.Bit.BIT6=0;CAN_STR3.Bit.BIT7=1;MC33984_fault2.Bit.BIT7=1;break;} //左标志灯5
case 8: {CAN_STR4.Bit.BIT2=0;CAN_STR4.Bit.BIT3=1;MC33984_fault3.Bit.BIT1=1;break;} //右标志灯5
case 9: {CAN_STR4.Bit.BIT6=0;CAN_STR4.Bit.BIT7=1;MC33984_fault3.Bit.BIT3=1;break;} //右刹车灯
case 10: {CAN_STR5.Bit.BIT2=0;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=1;break;} //中门底踏步灯
case 11: break;//{CAN_STR5.Bit.BIT4=0;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT7=1;break;} //车速传感器电源
case 12: break;
case 13: break;
case 14: break;//{CAN_STR6.Bit.BIT0=0;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT5=1;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;} //发动机仓灯
case 1: {CAN_STR0.Bit.BIT6=1;CAN_STR0.Bit.BIT7=1;MC33984_fault1.Bit.BIT3=1;break;} //右倒车灯
case 2: {CAN_STR1.Bit.BIT2=1;CAN_STR1.Bit.BIT3=1;MC33984_fault1.Bit.BIT5=1;break;} //右后雾灯
case 3: {CAN_STR1.Bit.BIT6=1;CAN_STR1.Bit.BIT7=1;MC33984_fault1.Bit.BIT7=1;break;} //预热继电器
case 4: {CAN_STR2.Bit.BIT2=1;CAN_STR2.Bit.BIT3=1;MC33984_fault2.Bit.BIT1=1;break;} //右后小灯
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;} //空调电容箱电源
case 7: {CAN_STR3.Bit.BIT6=1;CAN_STR3.Bit.BIT7=1;MC33984_fault2.Bit.BIT7=1;break;} //左标志灯5
case 8: {CAN_STR4.Bit.BIT2=1;CAN_STR4.Bit.BIT3=1;MC33984_fault3.Bit.BIT1=1;break;} //右标志灯5
case 9: {CAN_STR4.Bit.BIT6=1;CAN_STR4.Bit.BIT7=1;MC33984_fault3.Bit.BIT3=1;break;} //右刹车灯
case 10: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=1;break;} //后右转向灯
case 11: break;//{CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT7=1;break;} //车速传感器电源
case 12: break;
case 13: break;
case 14: break;//{CAN_STR6.Bit.BIT0=0;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT5=1;break;} //熄火器反
}
}
}
fault_count++; //故障计数器+1
if(fault_count>10) fault_count=0; //故障计数器最大为14
fault_ok=0; //清故障检测标志
}
}
/////////////////////////////////////////////////////////////
//定义: void OUT_STA(void)
//描述: 本地命令,执行操作
/////////////////////////////////////////////////////////////
void OUT_STA(void)
{
if(VACC_WAKE&&MC33984_fault1.Bit.BIT6==0) MC33984_OUT[3].Bit.BIT0=1; //无故障开 电磁开关
else MC33984_OUT[3].Bit.BIT0=0;
if(MC33984_fault3.Bit.BIT7) MC33984_OUT[11].Bit.BIT2=0; //无故障开 车速传感器电源
else MC33984_OUT[11].Bit.BIT2=1;
//后启动开关、空档开关、安全开关
if(SGL_status.Bit.BIT1&&SGL_status.Bit.BIT6&&SGL_status.Bit.BIT2&&MC33984_fault2.Bit.BIT2==0)
{
back_start=1;
if(back_start_count==10&&SGH_status.Bit.BIT4) MC33984_OUT[5].Bit.BIT0=0; //VL有效关闭启动继电器
else MC33984_OUT[5].Bit.BIT0=1; //无故障开 启动继电器
}
else
{
back_start=0;
back_start_count=0;
if((CAN_YB0.Bit.BIT2==0&&CAN_YB0.Bit.BIT3==0)||SGL_status.Bit.BIT2==0||MC33984_fault2.Bit.BIT2) MC33984_OUT[5].Bit.BIT0=0;
}
//检查灯开关
if(SGL_status.Bit.BIT3&&MC33984_fault1.Bit.BIT1==0) MC33984_OUT[0].Bit.BIT2=1; //无故障开 发动机仓灯
else MC33984_OUT[0].Bit.BIT2=0;
//倒车开关
if(SGL_status.Bit.BIT7)
{
if(MC33984_fault1.Bit.BIT2) MC33984_OUT[1].Bit.BIT0=0; //无故障开 左倒车灯
else MC33984_OUT[1].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT3) MC33984_OUT[1].Bit.BIT2=0; //无故障开 右倒车灯
else MC33984_OUT[1].Bit.BIT2=1;
}
else MC33984_OUT[1].Byte=0x1a;
//VL有效
if(SGH_status.Bit.BIT4&&MC33984_fault2.Bit.BIT5==0) MC33984_OUT[6].Bit.BIT2=1; //无故障开 空调电容箱电源
else MC33984_OUT[6].Bit.BIT2=0;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_YB(void)
//描述: 接收仪表CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_YB(void)
{
//排气制动开关或冷启动开关、油门开关、离合器开关
if(((CAN_YB0.Bit.BIT4==1&&CAN_YB0.Bit.BIT5==0)||(CAN_QKZC1.Bit.BIT6==1&&CAN_QKZC1.Bit.BIT7==0))&&SGH_status.Bit.BIT0&&(CAN_QKZC2.Bit.BIT6==1&&CAN_QKZC2.Bit.BIT7==0)&&(CAN_QKYC3.Bit.BIT4==0&&CAN_QKYC3.Bit.BIT5==0)&&MC33984_fault1.Bit.BIT0==0) MC33984_OUT[0].Bit.BIT0=1; //无故障开 排气制动电磁阀
else MC33984_OUT[0].Bit.BIT0=0;
//小灯一档、前雾灯开关
if((CAN_YB2.Bit.BIT4==1&&CAN_YB2.Bit.BIT5==0)||(CAN_YB3.Bit.BIT2==1&&CAN_YB3.Bit.BIT3==0))
{
if(MC33984_fault2.Bit.BIT0) MC33984_OUT[4].Bit.BIT0=0; //无故障开 左后小灯
else MC33984_OUT[4].Bit.BIT0=1;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0; //无故障开 右后小灯
else MC33984_OUT[4].Bit.BIT2=1;
if(MC33984_fault2.Bit.BIT4) MC33984_OUT[6].Bit.BIT0=0; //无故障开 牌照灯组
else MC33984_OUT[6].Bit.BIT0=1;
if(MC33984_fault2.Bit.BIT6) MC33984_OUT[7].Bit.BIT0=0; //无故障开 左标志灯4
else MC33984_OUT[7].Bit.BIT0=1;
if(MC33984_fault2.Bit.BIT7) MC33984_OUT[7].Bit.BIT2=0; //无故障开 左标志灯5
else MC33984_OUT[7].Bit.BIT2=1;
if(MC33984_fault3.Bit.BIT0) MC33984_OUT[8].Bit.BIT0=0; //无故障开 右标志灯4
else MC33984_OUT[8].Bit.BIT0=1;
if(MC33984_fault3.Bit.BIT1) MC33984_OUT[8].Bit.BIT2=0; //无故障开 右标志灯5
else MC33984_OUT[8].Bit.BIT2=1;
}
else
{
MC33984_OUT[4].Byte=0x1a;
MC33984_OUT[6].Bit.BIT0=0;
MC33984_OUT[7].Byte=0x1a;
MC33984_OUT[8].Byte=0x1a;
}
//点火开关ON档
if(CAN_YB0.Bit.BIT0==1&&CAN_YB0.Bit.BIT1==0)
{
chokez_flag=0;
if(chokef_flag==0)
{
choke_count=0;
chokef_flag=1;
}
}
else
{
chokef_flag=0;
if(chokez_flag==0)
{
choke_count=0;
chokez_flag=1;
}
}
//点火锁S档、安全开关有效
if(CAN_YB0.Bit.BIT2==1&&CAN_YB0.Bit.BIT3==0&&SGL_status.Bit.BIT2&&MC33984_fault2.Bit.BIT2==0)
{
if(start_count==100) //5s
{
if(SGH_status.Bit.BIT4) MC33984_OUT[5].Bit.BIT0=0; //VL有效关闭启动继电器
}
else
{
MC33984_OUT[5].Bit.BIT0=1; //无故障开 启动继电器
start_count++;
}
}
else
{
start_count=0;
//后启动开关或空档开关或安全开关无效
if(SGL_status.Bit.BIT1==0||SGL_status.Bit.BIT6==0||SGL_status.Bit.BIT2==0||MC33984_fault2.Bit.BIT2) MC33984_OUT[5].Bit.BIT0=0;
}
//自动润滑时间
if(CAN_YB3.Bit.BIT4==1&&CAN_YB3.Bit.BIT5==0&&MC33984_fault2.Bit.BIT3==0) MC33984_OUT[5].Bit.BIT2=1; //无故障开 自动润滑电机
else MC33984_OUT[5].Bit.BIT2=0;
//左转向
if(CAN_YB1.Bit.BIT6==1&&CAN_YB1.Bit.BIT7==0&&MC33984_fault3.Bit.BIT4==0) MC33984_OUT[10].Bit.BIT0=1; //无故障开 后左转向灯
else MC33984_OUT[10].Bit.BIT0=0;
//右转向
if(CAN_YB2.Bit.BIT0==1&&CAN_YB2.Bit.BIT1==0&&MC33984_fault3.Bit.BIT5==0) MC33984_OUT[10].Bit.BIT2=1; //无故障开 后右转向灯
else MC33984_OUT[10].Bit.BIT2=0;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_QKZC(void)
//描述: 接收前控左CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_QKZC(void)
{
//冷启动开关
if(CAN_QKZC1.Bit.BIT6==1&&CAN_QKZC1.Bit.BIT7==0&&MC33984_fault1.Bit.BIT7==0) MC33984_OUT[3].Bit.BIT2=1; //无故障开 预热继电器
else MC33984_OUT[3].Bit.BIT2=0;
//后雾灯开关
if(CAN_QKZC4.Bit.BIT2==1&&CAN_QKZC4.Bit.BIT3==0)
{
if(MC33984_fault1.Bit.BIT4) MC33984_OUT[2].Bit.BIT0=0; //无故障开 左后雾灯
else MC33984_OUT[2].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT5) MC33984_OUT[2].Bit.BIT2=0; //无故障开 右后雾灯
else MC33984_OUT[2].Bit.BIT2=1;
}
else MC33984_OUT[2].Byte=0x1a;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_ZKC(void)
//描述: 接收中控CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_ZKC(void)
{
//刹车开关、缓速器工作信号输入、排气制动
if((CAN_ZKC3.Bit.BIT0==1&&CAN_ZKC3.Bit.BIT1==0)||(CAN_QKYC4.Bit.BIT0==1&&CAN_QKYC4.Bit.BIT1==0)||MC33984_OUT[0].Bit.BIT0)
{
if(MC33984_fault3.Bit.BIT2) MC33984_OUT[9].Bit.BIT0=0; //无故障开 左刹车灯
else MC33984_OUT[9].Bit.BIT0=1;
if(MC33984_fault3.Bit.BIT3) MC33984_OUT[9].Bit.BIT2=0; //无故障开 右刹车灯
else MC33984_OUT[9].Bit.BIT2=1;
}
else MC33984_OUT[9].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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -