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条回答
3g465
1楼-- · 2019-03-24 19:13
< 呃~累加4次后ad_value的值有溢出吗?
LZ您可以试下用单步调试看下ad_value值吧
peter_zheng
2楼-- · 2019-03-24 21:01
< :TI_MSP430_内容页_SA7 --> ad_value 是unsigned char 8bit,adc10mem是16bit,累加4次发生溢出
modernthink
3楼-- · 2019-03-25 00:45
 精彩回答 2  元偷偷看……
woody13
4楼-- · 2019-03-25 05:46
多谢啊~~~ 我再改下~~
woody13
5楼-- · 2019-03-25 11:26
谢谢各位啦~~~
xinbako
6楼-- · 2019-03-25 16:30
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章