首页 资讯 应用 高压 设计 行业 低压 电路图 关于

单片机

旗下栏目: PLC 嵌入式 单片机 DCS

AVR单片机ADC左对齐与右对齐的数据读取问题

单片机 | 发布时间:2018-11-05 | 人气: | #评论# | 本文关键字:ADC,单片机,AVR
摘要:在网上看到AVR单片机片内10位ADC在设置时设置为右对齐,其转换结果可以 读取的语句为: resualt=int(ADCH)*256+ADCL; 右对齐的时候,10位ADC的结果表示方式为ADCH:ADCL,ADCH是10bit结果的高2位,ADCL是10b

在网上看到AVR单片机片内10位ADC在设置时设置为右对齐,其转换结果可以
读取的语句为:
resualt=int(ADCH)*256+ADCL;
右对齐的时候,10位ADC的结果表示方式为ADCH:ADCL,ADCH是10bit结果的高2位,ADCL是10bit结果的低8位,如果要将ADC的结果存储到一个int型的变量中,那就需要先将ADCH的结果左移8位,再和ADCL的相加,左移8位等价于乘以256. 也可以将ADC转化为以256为权的数值表示,即:
resualt=int(ADCH)*256^1+ADCL*256^0;
这样就可以清楚地理解这个数字的含义了。
而对于左对齐,是在保证8位的AD转化精度的时候采用的。根本不是“一般左对齐是没有的,如果有那是很难让人理解的。。。。。”,只有没有用到这个功能,而不是一般是没有的。
当结果为左对齐的时候,ADCH存储的是10bit结果的高8位,ADCL的最高两位存储的是10bit结果的最低两位,如果以上面的例子说,右对齐的数值是0x0347,变成左对齐的时候就是0xD1C0,这时ADCH=0xD1,ADCL=0xC0。
如果对转换结果的要求不高,只读取8位数据时,就是用左对齐方式读取ADCH的数值,因为0x0347÷4=0x00D1。
要想把左对齐的结果转换为整形数,那只能这样应用了:
result=(int)ADCH<<2+ADCL>>6,或者:result=(int)ADCH*4+ADCL/64
这样就可以用这个方法处理其他位数的AD转化结果了。当然如果工作进度紧张,最好优先使用右对齐的方式,这样采集的数字在二进制转化的过程中不会出错,不会影响工作进度。如果你是初学者还是认认真真地把这两种方法都考虑一下。

责任编辑:AVR单片机
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。