首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

单片机怎么让定时器计数暂停(不关定时器)

2013-08-04 
单片机如何让定时器计数暂停(不关定时器)启动和暂停,当暂停时候,暂停工作,但是如何让正在计的数也暂停?定

单片机如何让定时器计数暂停(不关定时器)
启动和暂停,当暂停时候,暂停工作,但是如何让正在计的数也暂停?定时器又不能关,因为关了会影响其他扫描程序。或者有没有其他扫描方法?
举个例子:
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;
        }
    }
}

热点排行