我需要使用 PIC 汇编语言在 8 位 PIC 微 Controller (特别是 16F627A 但这无关紧要)上的两个值之间随时间进行线性插值。尽管我在这里寻找的算法和实际代码一样多。
我需要取一个 8 位起始值,一个 8 位结束值和两者之间的位置(当前表示为 8 位数字 0-255,其中 0 表示输出应该是起始值,255 表示它应该是最终值,但如果有更好的方法来表示它,它可以改变)并计算内插值。
现在 PIC 没有除法指令,所以我可以编写通用除法例程并在每一步有效地计算 (B-A)/(x/255)+A 但我觉得可能有更好的方法在微 Controller 上执行此操作而不是我在 PC 上使用 C++ 执行此操作
有没有人对在这个硬件上有效地实现这个有任何建议?
最佳答案
您要查找的值是 (A*(255-x)+B*x)/255
.它只需要 8x8 乘法,最后除以 255,这可以通过简单地取和的高字节来近似。
选择 0..128 范围内的 x,不需要近似值:取 (A*(128-x)+B*x)<<1
的高字节.
关于algorithm - 8位微 Controller 上的线性插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661584/