数组索引和计数器溢出

时间:2019-07-06 10:49:57

标签: c embedded

我有一个测量行程的计数器。我已经在微控制器中分配了3个字节,这意味着我最多可以计数16777216。我想保持该计数,但是当我的计数超过255时,阵列的LSB重置为零,我被困在如何通过递增计数来递增到下一个数组元素计数

我尝试过

 Counterarray[strokelsb] = strokecount;
if(strokecount > 255)
  Counterarray[strokemid] = strokecount |Counterarray[strokelsb] ;


  Counterarray[strokelsb] = strokecount;
if(strokecount > 255)
  Counterarray[strokemid] = strokecount |Counterarray[strokelsb] ;

预期结果

Counterarray[strokelsb] = oxFF
 Counterarray[strokemid] + Counterarray[strokelsb] = 4095

1 个答案:

答案 0 :(得分:4)

我不确定变量strokecount是什么,该变量的类型是什么。您不需要此变量具有3个字节的计数器。

下面的计数器从0到16777215计数并翻转。

if (//counter logic for one tick over)
{
    Counterarray[strokelsb]++;
    if (Counterarray[strokelsb] == 0x00)
    {
        Counterarray[strokemid]++;
        if (Counterarray[strokemid] == 0x00)
        {
            Counterarray[strokemsb]++;
        }
    }
}