关于外部中断与霍尔传感器的问题,求大神指导下

2019-07-15 12:11发布

下面是利用霍尔传感器和外部中断的程序,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++;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
chenwei6991627
1楼-- · 2019-07-15 16:41
外部中断测脉冲数,定时器1S定时,算出来的!
boiled_water
2楼-- · 2019-07-15 17:47
chenwei6991627 发表于 2017-1-4 12:37
外部中断测脉冲数,定时器1S定时,算出来的!

问一下,我不知道我的想法对不对,是不是定时器定时1s测脉冲数,然后脉冲数转换为距离(公里数),这个转换是由编程员定的,比如说0.1公里=100脉冲,定时1s测的脉冲数就是速度,然后每次1s过去后脉冲清0,累计所有脉冲就是一个时间段汽车走过的距离,请帮看看我的想法对不对,并给予我指导,谢谢!
Y_123
3楼-- · 2019-07-15 20:49
boiled_water 发表于 2017-1-4 21:19
问一下,我不知道我的想法对不对,是不是定时器定时1s测脉冲数,然后脉冲数转换为距离(公里数),这个转换是由编程员定的,比如说0.1公里=100脉冲,定时1s测的脉冲数就是速度,然后每次1s过去后脉冲清0,累计所有脉冲就是一个时间段汽车走过的距离,请帮看看我的想法对不对,并给予我指导,谢谢! ...

GL=GL+count/10;
这个是怎么算的
人中狼
4楼-- · 2019-07-15 23:10
距离和转速的计算是结构和硬件电路设计决定的,软件只是根据设计的参数进行计算而已,这个是计价器的程序,所以GL=GL+count/10;应该是里程的累计,而count/10是结构和硬件设计决定而算出的一个里程,有可能是100米,也可能是200米,要看具体设计
七彩约定
5楼-- · 2019-07-16 01:34
 精彩回答 2  元偷偷看……

一周热门 更多>