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

[复制链接]
4023|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的延续性和继承性做的非常好的哦。。。
 楼主| 21ID 发表于 2009-9-16 10:33 | 显示全部楼层
_reg 是 UNSIGNED INT 型,而ADRESH和ADRESL是 UNSIGNED CHAR 型.当然要这样变换.
XIEYUANBIN 发表于 2009-9-15 17:54
左移8位是什么意思,还要和低8字节或。还是不懂啊,这个问题想了很长时间了。呵呵,自己被失恋搞成弱智了
ZRL700424 发表于 2009-9-16 11:47 | 显示全部楼层
假如AD结果是:高位B00000011
       低位B11111111
现在要把它合在一起(16位):
高位左移8位就变成了:B0000001100000000
再和低位或,就变成了:B0000001111111111

你地,明白?
mohanwei 发表于 2009-9-16 12:28 | 显示全部楼层
ADRESH要先转换为16位吧……不过编译器支持这种写法也无所谓了
 楼主| 21ID 发表于 2009-9-16 14:01 | 显示全部楼层
假如AD结果是:高位B00000011
       低位B11111111
现在要把它合在一起(16位):
高位左移8位就变成了:B0000001100000000
再和低位或,就变成了:B0000001111111111

你地,明白? ...
ZRL700424 发表于 2009-9-16 11:47
明白了,看起来是变傻了呵呵基础知识没掌握好,现在看来很简单。谢谢你!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

912

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部