发 帖  
原厂入驻New
[问答] 怎么用MC UMUL0808L&UDIV1608L例程处理小数字?
123 PIC
分享
大家好,我需要掌握PIC上的一些相当简单的数学运算,但是找不到任何要开始的信息。我以前用过MC UMUL0808L&UDIV1608L例程处理小数字,但现在我又迷路了。例如,我需要相当准确地计算数字,如下所示……1250/13500(= 0.0926当然)这是很容易在计算器上,但我怎么能在PIC?特里沃
0
2019-10-17 07:55:01   评论 分享淘帖 邀请回答
19个回答
您可能想要一个将16位数字除以另一个16位数字的DIV例程。不,再次阅读您的帖子,您需要一个浮点除法例程,一些以“F”字母开头的例程,您应该能够在Micro.的某个应用程序说明中找到它们。我过去在PIC16上使用过它们。AE还需要一个从十进制数到微芯片使用的32位浮点转换器(一些IEEE…事物)
2019-10-17 08:01:14 评论

举报

对于8位核心来说,定点数学要好得多。
2019-10-17 08:11:36 评论

举报

谢谢你们,我会四处打听一下,然后给你们答复。正如你们从我最初的问题中会注意到的,我已经做了很多研究,但还没有真正开始。PIC数学对我来说是非常新的。Trevor
2019-10-17 08:45:39 评论

举报

特里沃:我猜你在汇编程序中编码。是真的吗?你在寻找缩放整数(MeBead)还是浮点(DarioG)?如果您只需要大的定点(按比例缩放)算法,请参阅Wiki关于除法的文章。搜索._.。[添加链接导致访问错误。]我特别喜欢非恢复算法。一个好的多精度算术包在小型MCU中总是很方便的。如果需要pi或e之类的东西,GlennPI也是有理逼近的爱好者。它们可以在PC上预先计算,然后与t一起使用。π(π)的合理逼近:结果(08位)=22/7=3.14285714285714(Err~1/2484.5)。结果(16位)=355/113=3.14159292035398(Err~1/11776666)。结果(24位)=5419351/1725033=3.14159265358982(Err~1/117392084457848)。结果(32位)=245850922/78256779=3.14159265358979(Err~1/40184422134992268)。
2019-10-17 08:56:42 评论

举报

嗨,GlennP,是汇编程序。对不起,大部分都在我的头上,在这个早期阶段……有很多东西要学,我会按照你的建议来搜索。基本上,这是一个电机控制系统。我正在根据输入频率信号精确地控制电机/编码器驱动器。运行电机编码器频率与输入频率相同,很容易。2。运行在X2或X1/2等也很容易,但是现在我想通过输入频率的比例来调整电机速度。比如说1.26、0.65、0.35或类似的分数。
2019-10-17 09:06:28 评论

举报

不要忘记它是PIC依赖的任何概念。这是适用于任何处理器的基本嵌入式理论。
2019-10-17 09:15:38 评论

举报

嗨,DarioG,***是什么意思?
2019-10-17 09:44:57 评论

举报

我投票选出了你的帖子和其他人的3颗星。由于疯狂的更新和不切实际的支持,这些子论坛没有显示“明星”投票系统…
2019-10-17 09:50:09 评论

举报

你不需要很多数学。乘以1.26等于乘以323(1.26*256),然后将结果8位向右移位(除以256),这很容易用汇编程序完成。
2019-10-17 09:58:15 评论

举报

特里沃:我和NorthGuy在一起。除非这个比率是由两个数字(x/y)决定的,那么一个(缩放)乘法就是你所需要的。比率是从哪里来的?如果一切都是未签名的,那就相当容易了。甚至更好的是,你不需要在汇编程序中移动8。只要寻址HO字节(或字节)并忽略LO字节,除非您想查看它的HO位以进行舍入。
2019-10-17 10:13:06 评论

举报

感谢NorthGuy和GlennP,一些我没想到的好的简化想法。也许多解释一下我的需求会比较有帮助。Mysystem有一个地速传感器和一个由电机(带有编码器)驱动的输出机构。电机速度由PIC(闭环)精确控制。随着地面速度的变化而变化。这一切都正常。我的下一个挑战是根据操作者的意愿精确地改变电机速度的缩放。PIC需要计算地速脉冲和电机脉冲之间的“比率”,因为操作者改变所需的缩放。我有自己的代码来测量基隆。D速度和控制电机,但数学的“比率”效果回避我。特里沃
2019-10-17 10:30:15 评论

举报

人类操作员是如何进入这个缩放值的?如果将整数(而不是十进制值)传递给PIC设备,它将简化数学。这个比率必须是第一百吗?或者这个比率可以是两个幂,如NothGee所示,因为它可以避免除法吗?输入频率和比率的范围值是多少?哪个PIC设备?
2019-10-17 10:36:52 评论

举报

使用8位乘法:1.26×x=((67×x)& gt;& gt;8)+x在PIC18器件上是快速的,这可能更有效。
2019-10-17 10:50:59 评论

举报

如果用户反馈是“按更多按钮”和“按另一个按钮,按更少”,那么您只需根据用户意愿进行增减乘法运算。如果用户提供了数字,则需要将其转换为乘法运算。这取决于提供的数字的形式。
2019-10-17 11:02:53 评论

举报

感谢1和0和NorthGuy,我的PIC目前是16F883或16F884(取决于其他I/O要求),其中任一个工作良好,控制1或2个电机,加上地速输入。电机脉冲范围从60Hz到700Hz。来自雷达单元的地速脉冲通常范围从70Hz(2KPH)到700Hz(700Hz)20KPH)或者说每米128个脉冲。我目前使用...TMR0和IOC输入来测量/控制电机速度脉冲定时(电机编码器输入)TMR1和IOC输入来测量PWM到电机驱动的地速输入频率TMR2。“比率”乘数很可能是…1。操作员运行电机填补一个仓(PIC计数总电机脉冲)…例3230电动机脉冲2。操作员输入箱内容的重量(在带有LCD屏幕的键盘上)…例2650 Gracs3。PIC计算每个电机脉冲的分配重量……例=2650/3230=0.824。操作者输入每米行驶所需重量。例54 Gracs5。PIC计算电机脉冲/地速度脉冲之间的“比率”,以给出每米行驶所需的电机脉冲。一旦校准,“比率”因子被存储并作为“常数”应用,直到下一个操作员校准重写它。因此,例如,我需要计算……加权2650g/3230马达脉冲=0.82g/马达脉冲。期望输出54g/128地速脉冲=0.42g/速度。脉冲.比率=0.42/0.82=0.51马达脉冲/地速脉冲(用作TMR0&TMR1的定时器值)所以,TMR0和TMR1之间的比率实际上是。数字可以输入克,而不是Kg...整数整数。如果有2个小数点最终会被使用,那就太好了!然而,“比率”将以1.26或0.51的形式出现……使用NorthGuy的想法,我猜我可以通过以下方法来应用这个比率:“乘以1.26等于乘以323(1.26*256),然后将结果8位向右移动(除以256)”我认为这个方法的精确度大约为0.2%,这很好!希望这是有意义的,但也许我完全错了吗?特里沃
2019-10-17 11:13:53 评论

举报

如果程序存储器允许,你可以像在计算机上那样通过浮点数学预计算整数系数,每次运算符比率变化一次。你需要设计快速整数数学来运行汇编程序中的代码。同时,计算比值的部分可以用浮点C设计。这样计算可能相当简单,而且容易出错。
2019-10-17 11:30:47 评论

举报

只有小组成员才能发言,加入小组>>

65个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表