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

📄 sub_mc33984.h

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