直接放到定时器中断服务函数里面。那个 a变量,不做其他用的话,可以在服务函数里定义,并修饰成static类型的。用if判断a的值是不是到2000了。
if(2000 == a)
{
a = 0;
//到这里就表示已经2min了。可以定义个全局变量标识比如g_2min_flag,在这更改它的值。或者直接用这个a变量,定时到了就把最高位置1. a |= 0x8000; 然后main程序判断a的最高位是不是1就行了。
}
你想一下,当if(sw==1)成立的时候,仅仅经过了两个函数运行的时间(我们暂且把这段时间叫做 s 吧,它可能只需要几十微秒),就来判断sw是否为0。这显然不合理,因为人从站到门口,到离开门口,怎么可能只要几十微秒呢,也就是说,当人还没有来得及离开时,你就要求sw==0了。。。你的程序架构需要修改,不知道你听明白没