霍尔传感器测速的时候,用中断或定时器 只需要在原理图和PCB中连引脚 P34,程序中不需要定义引脚
用定时器0计数
main.c
//先声明函数
void Timer0Init(void); //定时器0初始化函数
//主函数后面写中断服务函数
void Timer0() interrupt 1
{
}
//测速 (这里直流电机用的定时器0,所以1秒变量 在直流电机里定时器计的时)
if(speed != 0)								//占空比不为0,通过霍尔传感器获取速度值
{
	flag_timer_begin = 1;						//开始1s计时

	if(flag_1s == 1)							//1s计时到达,通过脉冲数*周长/时间,得到速度值 km/h
	{
		flag_timer_begin = 0;
		speed_value = ((TH0*256+TL0) * 2.5 * 3.14) / 100.0 * 3.6;
		TH0 = TL0 = 0;
		flag_1s = 0;
		flag_timer_begin = 1;
	}
}

 

//最后写定时器0初始化函数
void Timer0Init()   //定时器0初始化
{
	TMOD|=0X05;//选择为定时器0计数模式,工作方式		
	TH0=TL0=0;    
	
	TR0=1;   //仅用TR0打开启动      TR0=1,T0开始工作   
}

 

 

发表回复

后才能评论