打印
[C语言]

帮忙查看项目SPEC的奇怪数据表示法!!!!!

[复制链接]
1732|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xfh168168|  楼主 | 2013-8-26 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一个旧项目的维护,看到如下文档,看不懂,请大家帮忙,谢谢!!!!

Value: Several fields with the following structure:
1.        Status                                        (8 bits unsigned)
0.        Finished
1.        Busy
2.        Error
3.        Unable to measure (not enough power)
4.        Unstable signal power                       
2.        Start to Finish time * ms                             (16 bits)
Bits 0~11:   *ms,           unsigned
Bits 12~15:   *16^,       signed
Start to Finish time = [Bits 0~11] * 16^[Bits 12~15] ms
3.        Start to current time * ms                     (16 bits)
Bits 0~11:   *ms,           unsigned
Bits 12~15:   *16^,       signed
Start to current time = [Bits 0~11] * 16^[Bits 12~15] ms

==》这里的16^[Bits 12~15]是什么意思?是指数表示法?为什么是16^而不是10^
比如:下命令到现在的时间为1小时,则
计算:1*60*60*1000=3600 000
Bits 0~11:   *ms,     应该为:b1110 0001 0000
Bits 12~15:   *16^,   应该为:b0011
Start to current time = [Bits 0~11] * 16^[Bits 12~15] ms

Start to current time:3E10

看来代码,好像不对。

相关帖子

沙发
xfh168168|  楼主 | 2013-8-26 15:06 | 只看该作者
自己顶一下!
文档解释如下,可是大于[bit0-bit12]就不知道怎么表达了,用指数形式吗?
      At 11:00:21  set gain from 7dB to 6dB, assume gain settle at 1200ms. ”set busy” pin as busy
      At 11:00:22  cmd 0x00 00 response busy 01 0000  3E80   
      At 11:00:22:2  ”set busy” pin as finish
      At 11:00:31  cmd 0x00 00 response finished 00 4B00 2711

使用特权

评论回复
板凳
xfh168168|  楼主 | 2013-8-26 15:43 | 只看该作者
有没有人知道啊?

使用特权

评论回复
地板
草民| | 2013-8-26 16:32 | 只看该作者
==》这里的16^[Bits 12~15]是什么意思?是指数表示法?为什么是16^而不是10^

^是C语言中异或运算符,在这里应该是按位异或功能。

楼主明白?

使用特权

评论回复
5
草民| | 2013-8-26 16:35 | 只看该作者
猜测,错了楼主勿怪

使用特权

评论回复
6
xfh168168|  楼主 | 2013-8-26 16:36 | 只看该作者
不是吧?我知道C语言中^表示异或,但是这里用来表示时间长度,为什么用异或?
这个文档是老外写的,由于时间过于久远,就不好问老外了,知道的请继续跟我讲......谢谢!

使用特权

评论回复
7
xfh168168|  楼主 | 2013-8-27 13:47 | 只看该作者
有人说是Bits 12~15:   *16^,       signed 是某次方,而有些人说是异或运算?到底是怎么样啊?

使用特权

评论回复
8
xfh168168|  楼主 | 2013-8-27 15:40 | 只看该作者
      At 11:00:21  set gain from 7dB to 6dB, assume gain settle at 1200ms. ”set busy” pin as busy
      At 11:00:22  cmd 0x00 00 response busy 01 0000  3E80   
      At 11:00:22:2  ”set busy” pin as finish
      At 11:00:31  cmd 0x00 00 response finished 00 4B00 2711

现在我知道是异或运算,但是如何得到2711 ?

使用特权

评论回复
9
sunhq02| | 2013-8-27 21:48 | 只看该作者
这不是异或, 是次方
它的意思是说, 16bits的前 12bits表达值
后 4bits作为有符号数解释, 作为指数

例如 2711
0x271 = 625
0x1 = 1
625 * 16^1 = 625 *16 =10000ms, 也就是10s

0x4B00
0x4B0 = 1200
0x0 = 0
1200 * 16^0 = 1200ms

使用特权

评论回复
10
sunhq02| | 2013-8-29 08:39 | 只看该作者
又是一个不结贴的家伙

使用特权

评论回复
11
xfh168168|  楼主 | 2013-8-31 21:28 | 只看该作者
呵呵  不好意思!兄弟,最近太忙了,没有上21IC,现在结了,分也当然给你!O(∩_∩)O~

使用特权

评论回复
12
xfh168168|  楼主 | 2013-8-31 21:34 | 只看该作者
怎么操作失败啊??

使用特权

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

本版积分规则

11

主题

42

帖子

0

粉丝