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

📄 timer.h

📁 客车车身控制模块 分为仪表部分 前控左 前控右 尾控和中控程序模块
💻 H
字号:
unsigned char sleep_count=0;
//**************************定时器初始化函数OK***********************************
static void Init_TBM(void)		//时基定时器
{
	TBCR_TBIE =1;				//2 基础定时器中断使能
	TBCR_TACK =1;				//3	TBM中断标志清除
            
	TBCR_TBR0 =1;
	TBCR_TBR1 =1;
	TBCR_TBR2 =0;				//分频系数16384,4.096ms
/*	TBR2	TBR1	TBR0	Divider Tap
							TMBCLKSEL
							0		1
	0		0		0		32,768	4,194,304
	0		0		1		8192	1,048,576
	0		1		0		2048	262144
	0		1		1		128		16,384
	1		0		0		64		8192
	1		0		1		32		4096
	1		1		0		16		2048
	1	 	1		1		8		1024
*/
	TBCR_TBIF =1;				//7 中断标志
	TBCR_TBON =1;				//0 启动定时器
	//2E    0010 1110
}
//**************************定时器中断函数***********************************
void interrupt 17 INT_TBM(void)	//4.096ms
{
	//系统指示灯
	LED_count++;
	if(LED_count==122)									//0.5s
	{
		LED_count=0;
		LED=!LED;
		fault_flag=1;
		fault_clk=1;
	}
	
	//喂狗、开关量检测
	dog_count++;
	if(dog_count==27)									//110ms
	{
		dog_count=0;
		Dog_MC33389();									//MC33389喂狗
		Dog_MC33984();									//MC33984喂狗
		
		RD33993(0x00,0x00,0x00);						//MC33993状态检测
		MC33993_FLAG=1;									//检测完成标志
		
		if(can_yb_flag)
		{
			INC_WAKE=0;
			can_yb_flag=0;
		}
		else if(INC_WAKE)	can_yb_flag=1;
		if(can_qkz_flag)
		{
			VACC_WAKE=0;
			can_qkz_flag=0;
		}
		else if(VACC_WAKE)	can_qkz_flag=1;
	}

	//后门电磁阀工作	1s
	if(door_flag)
	{
		door_count++;
		if(door_count==244)
		{
			door_count=0;
			door_flag=0;
			MC33984_OUT[13].Byte=0x1a;
		}
	}
	
	//唤醒、休眠
	if(VACC_WAKE||INC_WAKE)
	{
		//CAN通信
		can_comm_count++;
		if(can_comm_count==11)	CAN_CMD();				//发送CAN命令
		else if(can_comm_count==12)
		{
			can_comm_count=0;
			CAN_STR();									//发送CAN状态
//			sampling_flag=1;
		}
		//MC33984故障检测
		if(fault_flag&&fault_ok==0)	FAULT_MC33984();	//0.5s
	}
	else if(door_flag==0&&can_yb_flag==0&&can_qkz_flag==0)//门停止工作,且无CAN接收
	{
//		if(++sleep_count==100) {
		  
		Sleep_33984();									//MC33984睡眠
		Sleep_33993();									//MC33993睡眠
		Sleep_33389();									//MC33389睡眠
//		}
	}
	//MC33984端口刷新
	out_count++;
	if(out_count==11)
	{
		out_count=0;
		Out_MC33984();
	}

	TBCR_TACK =1;										//清除中断标志
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -