单片机如何让定时器计数暂停(不关定时器)
启动和暂停,当暂停时候,暂停工作,但是如何让正在计的数也暂停?定时器又不能关,因为关了会影响其他扫描程序。或者有没有其他扫描方法?
举个例子:
void main()
{
timer_init();
while(1)
{ scan();//定时器动态扫描
work();//
}
}
比如work()函数里有 led 亮 10s 后再灭 这个功能。如果当led一亮的时候,我按暂停键,等过了5s在按启动,这样led只会亮5s再灭。因为虽然按了暂停键,负载能根据指令暂停,但是那个定时器计数一直再计时呢,num++呢。关闭定时器的话,又会影响按键扫描。谢谢各位大虾!
[解决办法]
类似这样,加个信号控制:
int running;
void timer_isr(void)
{
...
if(running)
{
num++;
}
}
void main(void)
{
timer_init();
running = 1;
while(1)
{
scan();
work();
...
if(...)
{
running = 0;
}
}
}