msp430用ADC10求平均值

2019-03-24 13:45发布

#include "msp430f2122.h"
unsigned char key_value();void main( void ){     // Stop watchdog timer to prevent time out reset  WDTCTL = WDTPW + WDTHOLD;
  while(1)  {     P1DIR |=0X80;    key_value();   }
}
unsigned char key_value(){ unsigned char i,ad_value=0;  ADC10CTL0 = SREF_1+REFON+REF2_5V+ADC10SHT_2 + ADC10ON;   ADC10CTL1 = INCH_7+CONSEQ_2;  ADC10AE0 |= 0x80;                      P1DIR |= 0x01;                       ADC10CTL0 |= ENC+ADC10SC;   if (ADC10MEM*2.5/1023<2)  {       P1OUT |=0X80;     for(i=0;i<4;i++)    {     ADC10CTL0 |= ENC+ADC10SC;      while (ADC10CTL1 & ADC10BUSY);     ad_value=ad_value+ADC10MEM;    }    ad_value=ad_value/4;  if(ad_value*2.5/1023>0.2)    P1OUT |=0X01;  else    P1OUT &=~0X01;  }return ad_value;}
各位坛友帮忙看下,主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确,帮忙指点下,不胜感激~~~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
guozhongweiai
2019-03-25 21:41
ADC10MEM*2.5/1023<2,不一样的类型放在一起运算,没有加强制转换。

这里16进制的ADC10MEM能够直接参与运算吗?

一周热门 更多>

相关问题

    相关文章