一个自增计数的问题
在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 及时清零。