首页 > 解决方案 > 数组索引和计数器溢出

问题描述

我有一个测量笔画的计数器。我在微控制器中分配了 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

标签: cembedded

解决方案


我不确定变量是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]++;
        }
    }
}

推荐阅读