打印

为什么AD转换结果这样获取

[复制链接]
3032|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21ID|  楼主 | 2009-9-15 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是10位AD,pic16F676

ADFM=1  ; 转换数据右对齐

AD转换结束后_reg=(ADRESH<<8)|ADRESL;  这句实在看不懂,10位中到底取哪8位,怎么取?

_reg是unsigned int 型,存放转换结果。
沙发
XIEYUANBIN| | 2009-9-15 17:54 | 只看该作者
_reg 是 UNSIGNED INT 型,而ADRESH和ADRESL是 UNSIGNED CHAR 型.当然要这样变换.

使用特权

评论回复
板凳
stghl| | 2009-9-15 22:40 | 只看该作者
PIC的AD做很太那个,不同PIC的芯片操作都不一样,设置非常麻烦。。。。

使用特权

评论回复
地板
yewuyi| | 2009-9-16 08:38 | 只看该作者
PIC的AD做很太那个,不同PIC的芯片操作都不一样,设置非常麻烦。。。。
stghl 发表于 2009-9-15 22:40



呵呵,你没弄错把?PIC的延续性和继承性做的非常好的哦。。。

使用特权

评论回复
5
21ID|  楼主 | 2009-9-16 10:33 | 只看该作者
_reg 是 UNSIGNED INT 型,而ADRESH和ADRESL是 UNSIGNED CHAR 型.当然要这样变换.
XIEYUANBIN 发表于 2009-9-15 17:54
左移8位是什么意思,还要和低8字节或。还是不懂啊,这个问题想了很长时间了。呵呵,自己被失恋搞成弱智了

使用特权

评论回复
6
ZRL700424| | 2009-9-16 11:47 | 只看该作者
假如AD结果是:高位B00000011
       低位B11111111
现在要把它合在一起(16位):
高位左移8位就变成了:B0000001100000000
再和低位或,就变成了:B0000001111111111

你地,明白?

使用特权

评论回复
7
mohanwei| | 2009-9-16 12:28 | 只看该作者
ADRESH要先转换为16位吧……不过编译器支持这种写法也无所谓了

使用特权

评论回复
8
21ID|  楼主 | 2009-9-16 14:01 | 只看该作者
假如AD结果是:高位B00000011
       低位B11111111
现在要把它合在一起(16位):
高位左移8位就变成了:B0000001100000000
再和低位或,就变成了:B0000001111111111

你地,明白? ...
ZRL700424 发表于 2009-9-16 11:47
明白了,看起来是变傻了呵呵基础知识没掌握好,现在看来很简单。谢谢你!

使用特权

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

本版积分规则

157

主题

912

帖子

5

粉丝