📄 sub_mc33984.h
字号:
sys_data_type MC33984_fault1,MC33984_fault2,MC33984_fault3,MC33984_fault4;
sys_data_type _SUB_FLAGS;
#define door_buzzer _SUB_FLAGS.Bit.BIT0
#define door_open _SUB_FLAGS.Bit.BIT1
#define door_close _SUB_FLAGS.Bit.BIT2
#define fail_buzzer _SUB_FLAGS.Bit.BIT3
#define DOOR_WAKE _SUB_FLAGS.Bit.BIT4
#define door2_open _SUB_FLAGS.Bit.BIT5
#define door2_close _SUB_FLAGS.Bit.BIT6
unsigned int buzzer_count=0;
unsigned char fault1_count[8],fault2_count[8],fault3_count[8],fault4_count[3]; //故障清除计数器
//////////////////////////////////////////////////////////////
//定义: 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;} //顶灯1
case 6: {CAN_STR3.Bit.BIT0=1;CAN_STR3.Bit.BIT1=0;MC33984_fault2.Bit.BIT4=1;break;} //顶灯3
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=0;MC33984_fault2.Bit.BIT6=1;break;} //空调控制电源
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;} //换气扇电源
case 10: break;//NC
case 11: {CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=0;MC33984_fault3.Bit.BIT6=1;break;} //开关背光电源
case 12: {CAN_STR6.Bit.BIT0=1;CAN_STR6.Bit.BIT1=0;MC33984_fault4.Bit.BIT0=1;break;} //电视机
case 13: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=0;MC33984_fault3.Bit.BIT4=1;break;} //阅读灯左路
case 14: {CAN_STR6.Bit.BIT4=1;CAN_STR6.Bit.BIT5=0;MC33984_fault4.Bit.BIT2=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;} //顶灯1
case 6: {CAN_STR3.Bit.BIT0=0;CAN_STR3.Bit.BIT1=1;MC33984_fault2.Bit.BIT4=1;break;} //顶灯3
case 7: {CAN_STR3.Bit.BIT4=0;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //空调控制电源
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;} //换气扇电源
case 10: break;//NC
case 11: {CAN_STR5.Bit.BIT4=0;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT6=1;break;} //开关背光电源
case 12: {CAN_STR6.Bit.BIT0=0;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT0=1;break;} //电视机
case 13: {CAN_STR5.Bit.BIT0=0;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //阅读灯左路
case 14: {CAN_STR6.Bit.BIT4=0;CAN_STR6.Bit.BIT5=1;MC33984_fault4.Bit.BIT2=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;} //顶灯1
case 6: {CAN_STR3.Bit.BIT0=1;CAN_STR3.Bit.BIT1=1;MC33984_fault2.Bit.BIT4=1;break;} //顶灯3
case 7: {CAN_STR3.Bit.BIT4=1;CAN_STR3.Bit.BIT5=1;MC33984_fault2.Bit.BIT6=1;break;} //空调控制电源
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;} //换气扇电源
case 10: break;
case 11: {CAN_STR5.Bit.BIT4=1;CAN_STR5.Bit.BIT5=1;MC33984_fault3.Bit.BIT6=1;break;} //开关背光电源
case 12: {CAN_STR6.Bit.BIT0=1;CAN_STR6.Bit.BIT1=1;MC33984_fault4.Bit.BIT0=1;break;} //电视机
case 13: {CAN_STR5.Bit.BIT0=1;CAN_STR5.Bit.BIT1=1;MC33984_fault3.Bit.BIT4=1;break;} //阅读灯左路
case 14: {CAN_STR6.Bit.BIT4=1;CAN_STR6.Bit.BIT5=1;MC33984_fault4.Bit.BIT2=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;} //顶灯2
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;} //司机灯
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;} //左镜加热器
case 10: break;//NC
case 11: {CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=0;MC33984_fault3.Bit.BIT7=1;break;} //电子钟变光线
case 12: {CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=0;MC33984_fault4.Bit.BIT1=1;break;} //电子钟记忆线
case 13: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=0;MC33984_fault3.Bit.BIT5=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;} //示廓灯组
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;} //顶灯2
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;} //司机灯
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;} //左镜加热器
case 10: break;//NC
case 11: {CAN_STR5.Bit.BIT6=0;CAN_STR5.Bit.BIT7=1;MC33984_fault3.Bit.BIT7=1;break;} //电子钟变光线
case 12: {CAN_STR6.Bit.BIT2=0;CAN_STR6.Bit.BIT3=1;MC33984_fault4.Bit.BIT1=1;break;} //电子钟记忆线
case 13: {CAN_STR5.Bit.BIT2=0;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=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;} //示廓灯组
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;} //顶灯2
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;} //司机灯
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;} //左镜加热器
case 10: break;//NC
case 11: {CAN_STR5.Bit.BIT6=1;CAN_STR5.Bit.BIT7=1;MC33984_fault3.Bit.BIT7=1;break;} //电子钟变光线
case 12: {CAN_STR6.Bit.BIT2=1;CAN_STR6.Bit.BIT3=1;MC33984_fault4.Bit.BIT1=1;break;} //电子钟记忆线
case 13: {CAN_STR5.Bit.BIT2=1;CAN_STR5.Bit.BIT3=1;MC33984_fault3.Bit.BIT5=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(SP_status.Bit.BIT0&&MC33984_fault3.Bit.BIT0==0) MC33984_OUT[8].Bit.BIT0=1; //无故障开 彩灯1
else MC33984_OUT[8].Bit.BIT0=0;
//彩灯2开关
if(SP_status.Bit.BIT1&&MC33984_fault3.Bit.BIT1==0) MC33984_OUT[8].Bit.BIT2=1; //无故障开 彩灯2
else MC33984_OUT[8].Bit.BIT2=0;
//电源开关
if(SP_status.Bit.BIT2)
{
if(MC33984_fault1.Bit.BIT6) MC33984_OUT[3].Bit.BIT0=0; //无故障开 开关有效电源
else MC33984_OUT[3].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT7) MC33984_OUT[3].Bit.BIT2=0; //无故障开 电子钟显示线
else MC33984_OUT[3].Bit.BIT2=1;
if(MC33984_fault3.Bit.BIT2) MC33984_OUT[9].Bit.BIT0=0; //无故障开 换气扇电源
else MC33984_OUT[9].Bit.BIT0=1;
}
else
{
MC33984_OUT[3].Byte=0x1a;
MC33984_OUT[9].Bit.BIT0=0;
}
//司机灯开关
if(SP_status.Bit.BIT3&&MC33984_fault2.Bit.BIT7==0) MC33984_OUT[7].Bit.BIT2=1; //无故障开 司机灯
else MC33984_OUT[7].Bit.BIT2=0;
//厢灯开关1
if(SP_status.Bit.BIT4&&MC33984_fault2.Bit.BIT2==0) MC33984_OUT[5].Bit.BIT0=1; //无故障开 顶灯1
else MC33984_OUT[5].Bit.BIT0=0;
//厢灯开关2
if(SP_status.Bit.BIT5&&MC33984_fault2.Bit.BIT3==0) MC33984_OUT[5].Bit.BIT2=1; //无故障开 顶灯2
else MC33984_OUT[5].Bit.BIT2=0;
//厢灯开关3
if(SP_status.Bit.BIT6&&MC33984_fault2.Bit.BIT4==0) MC33984_OUT[6].Bit.BIT0=1; //无故障开 顶灯3
else MC33984_OUT[6].Bit.BIT0=0;
//电视机开关
if(SGL_status.Bit.BIT0==0&&MC33984_fault4.Bit.BIT0==0) MC33984_OUT[12].Bit.BIT0=1; //无故障开 电视机
else MC33984_OUT[12].Bit.BIT0=0;
//阅读灯开关
if(SGL_status.Bit.BIT1==0)
{
if(MC33984_fault3.Bit.BIT4) MC33984_OUT[13].Bit.BIT0=0; //无故障开 阅读灯左路
else MC33984_OUT[13].Bit.BIT0=1;
if(MC33984_fault3.Bit.BIT5) MC33984_OUT[13].Bit.BIT2=0; //无故障开 阅读灯右路
else MC33984_OUT[13].Bit.BIT2=1;
}
else MC33984_OUT[13].Byte=0x1a;
//
}
/////////////////////////////////////////////////////////////
//定义: void DOOR_BUZZER(void)
//描述: 接收仪表CAN命令,执行门蜂鸣器操作
//原来的CAN报文定义有问题
/////////////////////////////////////////////////////////////
void DOOR_BUZZER(void)
{
//前门开关-开
if(CAN_YB3.Bit.BIT6==1&&CAN_YB3.Bit.BIT7==0&&door_open)
{
door_open=0;
door_close=1;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0; //无故障开 蜂鸣器
else MC33984_OUT[4].Bit.BIT2=1;
buzzer_count=0;
door_buzzer=1;
}
//前门开关-关
else if(CAN_YB3.Bit.BIT6==0&&CAN_YB3.Bit.BIT7==1&&door_close)
{
door_close=0;
door_open=1;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0; //无故障开 蜂鸣器
else MC33984_OUT[4].Bit.BIT2=1;
buzzer_count=0;
door_buzzer=1;
}
if(CAN_YB4.Bit.BIT0==1&&CAN_YB4.Bit.BIT1==0&&door2_open)
{
door2_open=0;
door2_close=1;
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0;
else MC33984_OUT[4].Bit.BIT2=1;
buzzer_count=0;
door_buzzer=1;
}
else if(CAN_YB4.Bit.BIT1==1&&CAN_YB4.Bit.BIT0==0&&door2_close)
{
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0;
else MC33984_OUT[4].Bit.BIT2=1;
buzzer_count=0;
door_buzzer=1;
door2_close=0;
door2_open=1;
}
}
/////////////////////////////////////////////////////////////
//定义: void CAN_YB(void)
//描述: 接收仪表CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_YB(void)
{
//小灯一档、前雾灯开关
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.BIT0) MC33984_OUT[0].Bit.BIT0=0; //无故障开 左前小灯
else MC33984_OUT[0].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT1) MC33984_OUT[0].Bit.BIT2=0; //无故障开 示廓灯组
else MC33984_OUT[0].Bit.BIT2=1;
if(MC33984_fault3.Bit.BIT6) MC33984_OUT[11].Bit.BIT0=0; //无故障开 开关背光电源
else MC33984_OUT[11].Bit.BIT0=1;
if(MC33984_fault3.Bit.BIT7) MC33984_OUT[11].Bit.BIT2=0; //无故障开 电子钟变光线
else MC33984_OUT[11].Bit.BIT2=1;
//踏步灯开关
if(SGL_status.Bit.BIT2==0&&MC33984_fault1.Bit.BIT5==0) MC33984_OUT[2].Bit.BIT2=1; //无故障开 顶踏步灯
else MC33984_OUT[2].Bit.BIT2=0;
}
else
{
MC33984_OUT[0].Byte=0x1a;
MC33984_OUT[2].Bit.BIT2=0;
MC33984_OUT[11].Byte=0x1a;
}
//前雾灯开关
if(CAN_YB3.Bit.BIT2==1&&CAN_YB3.Bit.BIT3==0)
{
if(MC33984_fault2.Bit.BIT5) MC33984_OUT[6].Bit.BIT2=0; //无故障开 左前雾灯
else MC33984_OUT[6].Bit.BIT2=1;
}
else MC33984_OUT[6].Bit.BIT2=0;
//远光灯开关
if(CAN_YB2.Bit.BIT6==1&&CAN_YB2.Bit.BIT7==0)
{
if(MC33984_fault1.Bit.BIT4) MC33984_OUT[2].Bit.BIT0=0; //无故障开 左远光灯
else MC33984_OUT[2].Bit.BIT0=1;
if(MC33984_fault1.Bit.BIT2) MC33984_OUT[1].Bit.BIT0=0; //无故障开 左近光灯
else MC33984_OUT[1].Bit.BIT0=1;
}
else
{
MC33984_OUT[2].Bit.BIT0=0;
//近光灯开关
if(CAN_YB3.Bit.BIT0==1&&CAN_YB3.Bit.BIT1==0)
{
if(MC33984_fault1.Bit.BIT2) MC33984_OUT[1].Bit.BIT0=0; //无故障开 左近光灯
else MC33984_OUT[1].Bit.BIT0=1;
}
else MC33984_OUT[1].Bit.BIT0=0;
}
//左转向开关
if(CAN_YB1.Bit.BIT6==1&&CAN_YB1.Bit.BIT7==0)
{
if(MC33984_fault1.Bit.BIT3) MC33984_OUT[1].Bit.BIT2=0; //无故障开 前左转向灯
else MC33984_OUT[1].Bit.BIT2=1;
}
else MC33984_OUT[1].Bit.BIT2=0;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_QKYC(void)
//描述: 接收前控右CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_QKYC(void)
{
//镜加热开关
if(CAN_QKYC1.Bit.BIT4==1&&CAN_QKYC1.Bit.BIT5==0&&MC33984_fault3.Bit.BIT3==0) MC33984_OUT[9].Bit.BIT2=1; //无故障开 左镜加热器
else MC33984_OUT[9].Bit.BIT2=0;
//车内辅助灯开关
if(CAN_QKYC2.Bit.BIT6==1&&CAN_QKYC2.Bit.BIT7==0&&MC33984_fault2.Bit.BIT0==0) MC33984_OUT[4].Bit.BIT0=1; //无故障开 车内辅助灯
else MC33984_OUT[4].Bit.BIT0=0;
}
/////////////////////////////////////////////////////////////
//定义: void CAN_ZKC(void)
//描述: 接收中控CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_ZKC(void)
{
//卫生间有人开关
if(CAN_ZKC0.Bit.BIT4==1&&CAN_ZKC0.Bit.BIT5==0&&MC33984_fault4.Bit.BIT2==0) MC33984_OUT[14].Bit.BIT0=1; //无故障开 卫生间有人指示
else MC33984_OUT[14].Bit.BIT0=0;
//手制动开关
if(CAN_ZKC0.Bit.BIT6==0&&CAN_ZKC0.Bit.BIT7==0)
{
//机油压力低开关、机油旁通、水温过热开关、水位低、空滤器堵塞开关、低气压开关1、低气压开关2、燃油低
if((CAN_WKC0.Bit.BIT2&&CAN_WKC0.Bit.BIT3)||(CAN_WKC0.Bit.BIT4&&CAN_WKC0.Bit.BIT5)||(CAN_WKC0.Bit.BIT6&&CAN_WKC0.Bit.BIT7)||(CAN_WKC1.Bit.BIT2&&CAN_WKC1.Bit.BIT3)||(CAN_WKC1.Bit.BIT0&&CAN_WKC1.Bit.BIT1)||(CAN_ZKC7.Bit.BIT2&&CAN_ZKC7.Bit.BIT3)||(CAN_ZKC7.Bit.BIT4&&CAN_ZKC7.Bit.BIT5)||(CAN_ZKC7.Bit.BIT6&&CAN_ZKC7.Bit.BIT7))
{
if(MC33984_fault2.Bit.BIT1) MC33984_OUT[4].Bit.BIT2=0; //无故障开 蜂鸣器
else MC33984_OUT[4].Bit.BIT2=1;
fail_buzzer=1;
}
else
{
fail_buzzer=0;
if(door_buzzer==0) MC33984_OUT[4].Bit.BIT2=0;
}
}
else
{
fail_buzzer=0;
if(door_buzzer==0) MC33984_OUT[4].Bit.BIT2=0;
}
}
/////////////////////////////////////////////////////////////
//定义: void CAN_WKC(void)
//描述: 接收前控左CAN命令,执行操作
/////////////////////////////////////////////////////////////
void CAN_WKC(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -