找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 615|回复: 1
打印 上一主题 下一主题
收起左侧

单片机定时器超出

[复制链接]
回帖奖励 50 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次(中奖概率 50%)
跳转到指定楼层
楼主
ID:1079270 发表于 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;    之后按键就可以自动退出?
麻烦大佬解答一下。
  





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1097455 发表于 2023-10-27 10:12 | 只看该作者
Count_FV在中断里一直加,会反复溢出的,一定要对Count_FV进行限值加比如if(Count_FV<=250){Count_FV++;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表