标题: 怎么共用一个定时器调用方法? [打印本页]

作者: c511977    时间: 2022-8-7 14:23
标题: 怎么共用一个定时器调用方法?
用一个定时器,一个IO输出定时,5分钟输出高电平,隔1分钟输出低电平,再输出6分钟高电平,请各大侠指教下!

作者: angmall    时间: 2022-8-7 14:56
用一个定时器即可,将定时器设置成标准节拍,如1MS。需要多少定时时间,在定时器中断服务程序中计数就可以了。


http://www.51hei.com/bbs/forum.p ... 494&pid=1099428
作者: 188610329    时间: 2022-8-7 14:57
这描述也是无敌了,5分钟输出高电平,隔一分钟输出低电平,那么这隔的一分钟,io什么状态?高阻态?随机乱跳?  
作者: coody_sz    时间: 2022-8-7 15:33
定时器工作于1ms定时,作为系统节拍。然后再中断里处理各种定时,年月日时分秒,软件定时器,随便整。
作者: c511977    时间: 2022-8-7 16:36
188610329 发表于 2022-8-7 14:57
这描述也是无敌了,5分钟输出高电平,隔一分钟输出低电平,那么这隔的一分钟,io什么状态?高阻态?随机乱跳 ...

输出高电平5分钟,再输出1分钟低电平,再输出6分钟高电平!
作者: c511977    时间: 2022-8-7 20:15
188610329 发表于 2022-8-7 14:57
这描述也是无敌了,5分钟输出高电平,隔一分钟输出低电平,那么这隔的一分钟,io什么状态?高阻态?随机乱跳 ...

输出高电平5分钟,再输出1分钟低电平,再输出6分钟高电平!
作者: yzwzfyz    时间: 2022-8-7 22:12
很简单:
在定时中断服务程序中,多设置几个变量用于计数,对应计数1分,5分,6分……,想几个就几个。
计数满则时间到,该干啥干啥。同时复位计数值,继续计数。
作者: 188610329    时间: 2022-8-8 21:52
c511977 发表于 2022-8-7 20:15
输出高电平5分钟,再输出1分钟低电平,再输出6分钟高电平!

做一个 10ms 的定时中断,中断程序大致如下: 因为你具体也没说清楚,虽然不符合 闭环逻辑,但是该你参考应该足够了。

char        T0_Count,Mode_Count,Mode;

void        T0_INT()        interrupt 1
{
        if(++T0_Count == 100)
        {
                T0_Count = 0;
                switch(Mode)
                {
                        case        0:        //初始状态
                        IO        = 1;
                        Mode++;
                        break;
                        case        1:
                        if(++Mode_Count==5)       
                        {
                                Mode_Count = 0;
                                IO = 0;
                                Mode++;
                        }
                        break;
                        case        2:
                        if(++Mode_Count==1)
                        {
                                Mode_Count = 0;
                                IO = 1;
                                Mode++;
                        }
                        break;
                        case        3:
                        if(++Mode_Count==6)
                        {
                                Mode_Count = 0;       
                                IO = 0;                        //接下来变啥??
                                Mode++;                        //要不要 Mode = 0? 啥时候闭环?
                        }
                        break;
               
                }
               
        }
}

大致这样一个东西。


作者: 青草麦田    时间: 2022-8-10 16:52
在定时器里同添加一个变量计时,例如定时器是1MS   假如是500MS低电平  100MS高电平可以这样写
cnt++;
if(cnt>=500){
  高电平;
}else {
  低电平;
}
if(cnt>=600)
     cnt = 0;
              




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