⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sub_mc33984.h

📁 客车车身控制模块 分为仪表部分 前控左 前控右 尾控和中控程序模块
💻 H
📖 第 1 页 / 共 2 页
字号:
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 + -