一个自增计数的问题

在led屏上显示传感器数据时,要分时显示两个节点的数据。

采用一个自增计数的变量值来实现。

 

程序段如下:

{
static u16 iDisplayWhichSensor = 0;
iDisplayWhichSensor++;

//如果没有这一句,就会一直显示某一个节点的值,而达不到轮询显示的目标
if (iDisplayWhichSensor > 1000)
{
iDisplayWhichSensor = 0;
}

if (iDisplayWhichSensor%8==0)
{
LED_DisplaySNSensorData(g_stSN_SENSOR_DATA);
}
else if (iDisplayWhichSensor%8==4)
{
LED_DisplaySNSensorData(g_stSN_SENSOR_DATA+1);
}

}

修改之前的代码没有if (iDisplayWhichSensor > 1000){iDisplayWhichSensor = 0;}

结果就是:刚开始时程序运行正常(轮询显示两个节点的数据),但运行的时间长了之后,就会只显示1个节点的数据。

原因:当变量iDisplayWhichSensor 溢出之后,结果不确定,或许就是保持某个值不变。

解决:iDisplayWhichSensor 及时清零。

posted on 2017-11-21 15:28  坚强地活着  阅读(152)  评论(0编辑  收藏  举报

导航