标题: 单片机定时器超出 [打印本页]

作者: xnysfh    时间: 2023-10-25 16:40
标题: 单片机定时器超出
void interrupt Tc_Int(void) @ 0x04                                                                        // Here be interrupt function
{
            CLRWDT();                                                                                                                                //清看门狗
            Count_FV++;                                                                                                                      //计数器计数        Cnt_L用于送显或送0,Cnt_H用于闪烁
            if(Cnt_L & 0x01)                                                                                                                        //送显
    {
             Inter_Sym = 1;                                                                                                                 //奇数次,主显送出,在主函数中可以送数据了
                Adc_Sym = 1;         

if((SET_KEY == 0) && (INC_KEY == 1) && (DEC_KEY == 1))                                                                                                
        {         
                     if ((set_out) && (Set_State) && (Set_Shake == Long_Set_Sak))                                                                                                                                //长按退出
                    {
                     Set_State = 0;
                       set_out = 0;
                      Prog_State = 3;
                  }      
                        else if((Set_State && (Set_Shake == Set_Num)) || ((!Set_State) && (Set_Shake == Long_Set_Sak)))                //长按进入游标设定,短按切换
                    {   
                        if(Prog_State == 20)                                                                                                //迟滞设定状态
                       {
                               if(Set_State ++ >= 5)                Set_State = 4;                                //Set_State = 4.5.6          游标123迟滞的设定
                        }
                        if(Prog_State == 3)                                                                                                
                        {
                                Cur_Disappear = 1;                                                                                        //在设定状态下                打开游标
                                 if(Set_State ++ >= 2)                                                                                //Set_State = 1.2.3          游标123的设定
                                {
                                    Set_State = 1;   
                                }
                        }
                            set_out = 1;
                      Count_OV = 0;                                                                                                         //有有效按键,清掉计数
                    }
                    
                    if(Set_Shake++ >(Long_Set_Sak + 1))                        Set_Shake = Long_Set_Sak + 1;                                 //不让溢出                        
        }
if((Scan_Num++) >= 18)                                                                                 //
        {
            Scan_Num = 0;
            Count_OV++;                                                                                                        //每一个大循环计数器+1,用于按键自动退出
        }      
        }
请问一下为什么在语句中加上        Count_OV = 0;    之后按键就可以自动退出?
麻烦大佬解答一下。
  






作者: 圣博朗西斯    时间: 2023-10-27 10:12
Count_FV在中断里一直加,会反复溢出的,一定要对Count_FV进行限值加比如if(Count_FV<=250){Count_FV++;




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1