天堂,你的歌 发表于 2014-7-7 21:24:25

CC2530在获取温度值时为什么要value = ADCL>>2;value |= ADCH<<6 ??

怎么看不懂啊。。?求解答。。

afeionline 发表于 2014-7-8 23:55:17

先声明,我没看过手册,瞎猜的
估计adc出来的数据是存在两个寄存器里的,adch和adcl,其中adch的低2位是有效数据,adcl的8位全都是有效数据。可能用不到太高的精度,所以通过右移的方式去掉了adcl的低2位,只保留高6位,然后通过左移adch,将adch的低2位移到了结果中的高2位,下面是示意。
adcl: 1010 1101
adch: 0000 0010
移位后的效果是只保留方括号内的8位:
0000 0001,结果就是1010 1011

bailangcn 发表于 2014-7-9 08:50:30

afeionline 发表于 2014-7-8 23:55
先声明,我没看过手册,瞎猜的
估计adc出来的数据是存在两个寄存器里的,adch和adcl,其中adch的低2位是有 ...

同意LS


~~

a627236799 发表于 2014-7-11 11:32:51

是一种乘除的计算方法 这样更快

天堂,你的歌 发表于 2014-7-13 09:42:30

afeionline 发表于 2014-7-8 23:55
先声明,我没看过手册,瞎猜的
估计adc出来的数据是存在两个寄存器里的,adch和adcl,其中adch的低2位是有 ...

我对照数据手册看了下,差不多是这个意思~谢谢哈
页: [1]
查看完整版本: CC2530在获取温度值时为什么要value = ADCL>>2;value |= ADCH<<6 ??