[求助] 求助

zzbaizhi   2012-1-5 08:22 楼主

看到一个关于5438ADC的程序,要求If A0 > 0.5*AVcc, P1.0 set, else reset.

程序是这样写的

if (ADC12MEM0 >= 0x7ff)                 // ADC12MEM0 = A0 > 0.5AVcc?
      P1OUT |= BIT0;                         // P1.0 = 1
    else
      P1OUT &= ~BIT0;     

不明白为什么0.5AVcc用0x7ff表示?

急~~

回复评论 (7)

这东西看用户手册有计算公式。AVCC对应的值是0xFFF,那0.5AVCC应该是多少?假定参考电压是AVCC的话。
点赞  2012-1-5 08:41
12位ADC结果值,AVCC占4096份,那么1/2 AVCC占2048份,由于每份是从0开始。所以AVCC - 4095
1/2 AVCC - 2047
点赞  2012-1-5 08:47
DS上讲的很清楚,要多看看啊
  • 未命名.jpg
点赞  2012-1-5 09:20
程序中Vr+=Vref+ , Vr-=AVss,参考电压为2.5V,如果利用上面公式计算,要知道AVSS的值,那AVSS为多少?
点赞  2012-1-5 10:09
Vin=AVCC,它的值又是多少?
点赞  2012-1-5 10:13

360截图20120105155748543.jpg

找到了

点赞  2012-1-5 15:58
ADC的参考电压可以有3个来源。1
1. 内部参考,
2. 外部参考
3. AVCC
1. 如果选ADC12的参考源为AVCC,那么0.5*AVCC就对应ADC12的慢量程值的一半,及4096/2=2048 = 0x7FF.
所以这个例程的前提是设置ADC12的参考源为AVCC.
点赞  2012-1-5 20:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复