你能在Arduino(C / C ++)中创建128位无符号整数吗?

时间:2015-11-12 15:56:59

标签: c++ c arduino

我正在使用uints来存储位序列,并希望存储128位序列。我计划使用循环位旋转来循环它们。有一个很好的方法来制作一个128位整数?如果没有,那么下一个最好的东西是什么?#34;循环位移"?

我需要快速运行,因为它会在中断中发生。大约每250微秒。

1 个答案:

答案 0 :(得分:3)

使用char[16]数组,并在程序集中编写关键的移位代码,而不是C,因为C没有很好的方法可以让您从班次中获取进位。 / p>

您应该可以执行类似

的操作
ldi r29, hi8(array) ; Load Y register
ldi r28, lo8(array) ; (16 bits)
ldi r22, 16         ; Loop counter
ldd r23, Y+15       ; Get the last byte
lsl r23             ; And put the last bit into the carry flag
loop:               ;   so it will be shifted into the first bit
ld r23, Y           ; Load from array into r23
rol                 ; Rotate left through carry
st Y+, r23          ; Store it back and increment Y
dec r22             ; Decrement loop counter
brne loop           ; Loop if not done

进行旋转,但这是未经测试的,我不是AVR程序集。 dec是特殊的,不会干扰进位标记,因此可以通过循环安全地保存。