霍尔传感器测速的时候,用中断或定时器 只需要在原理图和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开始工作
}
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。