HLHG 发表于 2022-1-10 10:38

单片机编程中,在规定时间内完成某个动作

写程序的时候遇到这样的问题,比如5秒之内必须完成某个动作,我会这样写
if(time<5S)
{
FUNC();
}
超过5秒之后,就不能再执行函数FUNC()。超过5秒之后,还用C语言进行表示吗?比如,
If(time>=5s)
{
break;
}
请各位多指教,谢谢。

ayb_ice 发表于 2022-1-10 10:50

加大time长度,使其在程序生命期间不溢出就可以了,比如32位计数秒
然后直接
if(time<5S)
{
    FUNC();
}
就可以了
这只适合一次性的,不适合重复性的,一次性可以不需要这么长的计数器,可以通过增加标志位来解决
static bit bExeOk = 0;

if (!bExeOk)
{
    if (SecCnt < 5)
    {
      FUNC();
    }
    else
    {
      bExeOk = 1;
    }
}

HLHG 发表于 2022-1-10 12:41

ayb_ice 发表于 2022-1-10 10:50
加大time长度,使其在程序生命期间不溢出就可以了,比如32位计数秒
然后直接
if(time ...

好的好的,谢谢您,豁然开朗。

shipeng1989 发表于 2022-1-11 08:13

FUNC();的执行时间能否确定?如果能确定在执行FUNC();前判断剩余时间是否充足否则不执行即可
页: [1]
查看完整版本: 单片机编程中,在规定时间内完成某个动作