打印

一个用轮周计算距离的题目

[复制链接]
3623|25
手机看帖
扫描二维码
随时随地手机跟帖
沙发
mohanwei| | 2008-8-19 20:45 | 只看该作者

不太明白你的系统……

乘除法怎么会运算量太大呢?
用加减法也不是不可以,定义一个ulong型变量,或者用定点数累加即可。

使用特权

评论回复
板凳
xwj| | 2008-8-19 20:52 | 只看该作者

每转一圈就加3,显示是显示整数,然后...

在倒数第二位多显示个小数点


明白吗?

使用特权

评论回复
地板
5880527| | 2008-8-19 21:03 | 只看该作者

随便啥整都行啊

很多地方计米除不净的岂不是要郁闷死了

使用特权

评论回复
5
太阳之母| | 2008-8-20 00:01 | 只看该作者

嘿嘿

3楼正解。

LZ大概总以为MCU就是人的脑子。

难道就不会以分米为单位累计距离吗?

显示的时候,在个位十位之间放个小数点,看起来显示的就是米了。

使用特权

评论回复
6
taoest| | 2008-8-20 12:24 | 只看该作者

定点数

定点数,也就是更换单位。
以0.1米为单位计算,甚至以0.3米为单位计算

这样, distance++;就解决了。
显示的时候 就显示distance*3/10,单位是米。

使用特权

评论回复
7
农民讲习所| | 2008-8-20 12:30 | 只看该作者

比如显示30.0

实际显示300,再显示个小数点符号就行。内部存储的就是300。
小数点是显示的符号,不是计算的符号。

使用特权

评论回复
8
t.jm| | 2008-8-20 12:55 | 只看该作者

实际上不可能刚好是0.3M,

所以每转一周,SUM += 0.300000000*(256*256*256),
SUM>>24就是你的结果.
再仔细思考一下,就看得出来不可能做的到"10万公里后,误差也不大于正负1米",因为0.3米的周长要精确到0.003个微米,可能吗?

使用特权

评论回复
9
太阳之母| | 2008-8-20 15:22 | 只看该作者

嘿嘿

LS看前面的帖子不仔细吧?LZ最后一行,最后一句。

使用特权

评论回复
10
t.jm| | 2008-8-20 16:27 | 只看该作者

哈哈!

要知道软件计算.除非MCU出错,哪有误差.
就象一个时钟,软件记时部分是无误差的,误差只是硬件带来的.
如此以来讨论只要算法正确,软件误差永远为0.

使用特权

评论回复
11
aihe| | 2008-8-20 17:15 | 只看该作者

考虑以下车轮的滑动吧,这个影响很大的哦

使用特权

评论回复
12
icmap|  楼主 | 2008-8-20 20:55 | 只看该作者

8楼的方法很好

 

使用特权

评论回复
13
icmap|  楼主 | 2008-8-20 22:00 | 只看该作者

回10楼,软件也有精度限制

本帖最后由 icmap 于 2015-7-25 23:32 编辑

回10楼

使用特权

评论回复
14
t.jm| | 2008-8-20 23:47 | 只看该作者

LZ的方法也不错,

我的看法是软件设计也要与硬件相称,这样只要SUM += 0.3000000*256*256,就足够了。

使用特权

评论回复
15
gqhonesty| | 2008-8-21 12:03 | 只看该作者

LZ的算法的精度提高有啥特别吗!

LZ的算法的精度提高有啥特别吗!
倒是感觉XWJ的更,,,,

使用特权

评论回复
16
icmap|  楼主 | 2008-8-21 19:54 | 只看该作者

回复15楼

本帖最后由 icmap 于 2015-7-25 23:33 编辑

回复15楼

使用特权

评论回复
17
zidaozhou| | 2008-8-22 13:26 | 只看该作者

误差应该是有传感器测量上产生的,软件计算怎么会有误差

不明白楼主的意思。

使用特权

评论回复
18
dengm| | 2008-8-22 19:20 | 只看该作者

BCD

       DT   EQU 30H     ; PACKED BCD
       DT1  DATA DT  ;         0.01m
       DT2  DATA DT+1;         1m
       DT3  DATA DT+2;       100m
       DT4  DATA DT+3;     10000m
       DT5  DATA DT+4;   1000000m 
       DT6  DATA DT+5; 100000000m
 
;--------------------------------------
; DT = 0
SUB_CLR_DATA:
      MOV R0, #DT
      MOV R2, #6
CLR_DATA:
        MOV @R0, #0
        INC R0
      DJNZ R2, CLR_DATA
      RET
;-------------------------------
SUB_ADD_30_CM:
      MOV R0, #DT
      MOV A, #30
      CLR C 
NEXT_ADD_30:
          ADDC A, @R0
          DA A
          MOV @R0, A
          CLR A
          INC R0 
       JC NEXT_ADD_30
      RET

使用特权

评论回复
19
dragon_hn| | 2008-8-22 20:23 | 只看该作者

xwj应该是最直接的

xwj应该是最直接的

使用特权

评论回复
20
icmap|  楼主 | 2008-8-22 20:42 | 只看该作者

感谢18楼的回复

感谢18楼的回复。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

180

帖子

0

粉丝