关于外部中断与霍尔传感器的问题,求大神指导下
时间:10-02
整理:3721RD
点击:
下面是利用霍尔传感器和外部中断的程序,GT=0显示公里数,GT=1显示时间,GL是公里数,用的是A3144霍尔传感器,我想问的是他是怎样测速的,我看不明白,这里外部中断设置为下降沿触发,当我按下电机开关的时候,这时变为
低电平吧,count++,问题来了,他是怎样加到60的?还有加到60后,为什么是GL=GL+count/10?这是出租车计价器的程序,我看到外部中断不懂,不知道他是怎样测速的?只有count++这里对count进行运算,程序其他地方没有的,实物的效果是按下电机开关,就会直接显示里程,它会自动从0逐渐增加,求各位大神指导下小弟,谢谢了!
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0xB0;
EA = 1;
ET0 = 1;
TR0 = 1;
IT0=1;
EX0=0;
}
//定时器0中断50ms
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
m++;
if(m>=20) //1秒时间到
{
m=0;
if(count>=60)
{
GT=0; //公里
GL=GL+count/10;
count=0;
}
else
{
count=0;
GT=1; //时间
Time++; //时间++
}
}
}
void EXINT0() interrupt 0
{
count++;
}
低电平吧,count++,问题来了,他是怎样加到60的?还有加到60后,为什么是GL=GL+count/10?这是出租车计价器的程序,我看到外部中断不懂,不知道他是怎样测速的?只有count++这里对count进行运算,程序其他地方没有的,实物的效果是按下电机开关,就会直接显示里程,它会自动从0逐渐增加,求各位大神指导下小弟,谢谢了!
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0xB0;
EA = 1;
ET0 = 1;
TR0 = 1;
IT0=1;
EX0=0;
}
//定时器0中断50ms
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
m++;
if(m>=20) //1秒时间到
{
m=0;
if(count>=60)
{
GT=0; //公里
GL=GL+count/10;
count=0;
}
else
{
count=0;
GT=1; //时间
Time++; //时间++
}
}
}
void EXINT0() interrupt 0
{
count++;
}
外部中断测脉冲数,定时器1S定时,算出来的!
问一下,我不知道我的想法对不对,是不是定时器定时1s测脉冲数,然后脉冲数转换为距离(公里数),这个转换是由编程员定的,比如说0.1公里=100脉冲,定时1s测的脉冲数就是速度,然后每次1s过去后脉冲清0,累计所有脉冲就是一个时间段汽车走过的距离,请帮看看我的想法对不对,并给予我指导,谢谢!
GL=GL+count/10;
这个是怎么算的
距离和转速的计算是结构和硬件电路设计决定的,软件只是根据设计的参数进行计算而已,这个是计价器的程序,所以GL=GL+count/10;应该是里程的累计,而count/10是结构和硬件设计决定而算出的一个里程,有可能是100米,也可能是200米,要看具体设计