请教AVR单片机片内10位ADC转换结果读取问题。

 我来答
风利小3718
2010-11-21 · TA获得超过602个赞
知道小有建树答主
回答量:239
采纳率:97%
帮助的人:60.1万
展开全部
这句话很简单,就是ADCH(高位寄存器)乘以256+低位。
那么为什么高位要乘以256,为什么不乘以128呢,那是因为ADCL是8位的,能表示256个数这就相当于256进制的两位数用位权表示的方法是ADCH*256^1+ADCL;
右对齐一般很少遇到这个,一般在计算机里面会遇到大端,小端,就是字节的存储顺序,大端的是高位字节放在低位地址,小段是高位字节放在高位地址。
因为AVR是8位,所以谈不上大端和小端(就一个字节)。但是10位二进制怎么表示呢,就把低8位放ADCL里面,L表示低位,高二位就放ADCH,H表示高。它说右对齐应该是帮你理解的,我们书写二进制的时候会从左向右写,左是高位,右是低位,它说的右对齐是ADCH中的8位中只用到了两位,把这两位放最右边,就是低位。所以resualt=int(ADCH)*256+ADCL;这个就很容易理解了,以为AVR是8位机,所以这种技巧要用到很多地方,比如说定时器里面就用到像下面的句子
RCAP2H = (65536-60000)/256;//@12M 10ms 16bit 自动重载
RCAP2L = (65536-60000)%256;
这两句是52里面的,表示计6000次时;
一般左对齐是没有的,如果有那是很难让人理解的,你可以想象一下,把那两位放左面,那多麻烦。如果你对这方面有兴趣,可以去看下大端模式和小端模式。
如果还有问题可以HI我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式