8位微控制器的线性插值

jco*_*der 9 algorithm microcontroller assembly

我需要使用PIC汇编语言在8位PIC单片机(特别是16F627A,但这应该无关紧要)上的两个值之间进行线性插值.虽然我在这里寻找的算法与实际代码一样多.

我需要取8位起始值,8位结束值和两位之间的位置(当前表示为8位数0-255,其中0表示输出应该是起始值,255表示它应该是最终值值,但如果有更好的方法来表示,则可以改变)并计算插值.

现在PIC没有除法指令所以我可以编写一个通用除法例程并在每一步有效地计算(BA)/(x/255)+ A但我觉得有可能有​​一个更好的方法来做到这一点一个微控制器,而不是我用c ++在PC上做的方式

有没有人有任何建议在这个硬件上有效地实现这个?

Eri*_*lle 7

你正在寻找的价值是(A*(255-x)+B*x)/255.它只需要8x8乘法,最后除以255,可以通过简单地取总和的高字节来近似.

选择范围为0..128的x,不需要近似值:取高位字节(A*(128-x)+B*x)<<1.