#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次求平均值,值就不正确,帮忙指点下,不胜感激~~~
此帖出自
小平头技术问答
这里16进制的ADC10MEM能够直接参与运算吗?
一周热门 更多>