jack88291641 发表于 2024-1-22 15:33:50

掉电用掉电定时器唤醒后转到用定时器1显示LED的程序时,定时器1失效 | 已解决

掉电后用掉电定时器唤醒后,转到用定时器1显示LED的程序时,定时器1失效,这样LED就不闪烁了。该程序如果不是掉电唤醒后运行,执行正常,LED闪烁。

不知道什么原因掉电定时器唤醒后定时器1 无效了

void Save_E_Mode()            //
{
   while(1)
{

      NOP4();      //STC8Hxx.h
    PCON = 0x02;//
      _nop_();
      _nop_();
      _nop_();
      NOP4();      //
      
             Dispaly_BattV();   
   
}

void Dispaly_BattV()
{

    CPU_Init();            // 单片机初始化子程序,这里加和不加效果一样都

    while(1)
    {   

         if (msec5<=2000)
                {
                  P0=0xff;//led 端口 ,msec5在定时器1里计数
            
                }else
                if (msec5<4000)
                {
                   P0=0x0f;

                }    else {
                   msec5=0;
                }
    }
}   

jack88291641 发表于 2024-1-22 15:57:08

用的是stc8h8k64u芯片

梁工 发表于 2024-1-22 16:06:03

掉电唤醒对别的外设是没有影响的,唤醒只是恢复时钟,不会影响定时器等等外设的。唤醒后时钟恢复,定时器得到时钟继续计数,不需要“转到”的操作。

jack88291641 发表于 2024-1-22 16:16:33

梁先生您好,下面的应该还有判断语句
void Save_E_Mode()            //
{
   while(1)
{

      NOP4();      //STC8Hxx.h
    PCON = 0x02;//
      _nop_();
      _nop_();
      _nop_();
      NOP4();      //
      
          if (1==CDB_LED1_IN)
   {
                       Dispaly_BattV();
                        }       
}

唤醒后判断接口是否是1,如果不是继续掉电,否则执行 Dispaly_BattV(); 现在是 Dispaly_BattV();程序里需要有时间中断,但不工作了

lzl1okOK 发表于 2024-1-22 16:36:49

加个串口看下定时器计数值

jack88291641 发表于 2024-1-25 09:29:42

谢谢两位,最后发现问题是在时间中断里调用了掉电子程序。
页: [1]
查看完整版本: 掉电用掉电定时器唤醒后转到用定时器1显示LED的程序时,定时器1失效 | 已解决