#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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1:ad_value是char
2:ADC10MEM*2.5/1023<2,不一样的类型放在一起运算,没有加强制转换。
3:打开ADC REF后没有延时,直接开始采样。
一周热门 更多>