[51单片机] 关于主函数定时刷新问题。

[复制链接]
2626|27
icecut 发表于 2016-8-16 15:53 | 显示全部楼层
volatile.....
yzjgod 发表于 2016-8-16 16:05 | 显示全部楼层

大神说的对,主函数里的变量一直没变应该。
HARRY007 发表于 2016-8-16 17:25 | 显示全部楼层
限制主函数循环的时间可以试着这样
if( basetime < 20 )
    continue;
basetime = 0;
joyme 发表于 2016-8-16 17:56 | 显示全部楼层
控制好任务的执行时间,怎么会影响到其他函数?
中断里变化的全局变量建议用volatile修饰,可以减少那种概率很小判断错误
Waming 发表于 2016-8-16 17:59 | 显示全部楼层
本帖最后由 Waming 于 2016-8-16 18:01 编辑
一个小黄人 发表于 2016-8-16 11:11
不是降低功耗,我是初学者。我案件扫描原本使用delay()延时的,做到后面我发现这种方法非常不好,功能 ...

如果楼主仅仅是想定时扫描按键,那就没有必要去限制 while(1) 的循环,你可以把BaseTime 放在 按键扫描函数keyscan() 中:

void keyscan(void)
{
    if(BaseTime > 20)
   {
        BaseTime = 0;

        //do something
   }
}
BaseTime 最好定义为 volatile
 楼主| 一个小黄人 发表于 2016-8-16 21:10 | 显示全部楼层

谢谢,试过之后,确实可以行的通。
 楼主| 一个小黄人 发表于 2016-8-16 21:12 | 显示全部楼层
joyme 发表于 2016-8-16 17:56
控制好任务的执行时间,怎么会影响到其他函数?
中断里变化的全局变量建议用volatile修饰,可以减少那种概 ...

get了,谢谢。
 楼主| 一个小黄人 发表于 2016-8-16 21:13 | 显示全部楼层
Waming 发表于 2016-8-16 17:59
如果楼主仅仅是想定时扫描按键,那就没有必要去限制 while(1) 的循环,你可以把BaseTime 放在 按键扫描函 ...

我不仅仅是想定时扫描按键,还需要用到其他模块。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部