求高手帮忙看一下这个程序

2019-03-24 15:26发布

我想调G2板子上的ADC10,写了这个程序,从P1.1输入,当输出超过一定值P1.0灯灭、

#include "msp430g2231.h" 
void main(void) {   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT   ADC10CTL0 = SREF_0+ADC10SHT_2 + ADC10ON + ADC10IE+REFON; // ADC10ON, interrupt enabled   ADC10CTL1=INCH_1+CONSEQ_0;  ADC10AE0 |= BIT1 ;                      // P2.0 ADC option select   P1DIR |= BIT0;                            // Set P1.0 to output direction 
  while(1)  {     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start     __bis_SR_register(CPUOFF + GIE);        // LPM0, ADC10_ISR will force exit     if (ADC10MEM < 0x1FF)       P1OUT |= BIT0;                       // Clear P1.0 LED off     else       P1OUT &= ~BIT0;                        // Set P1.0 LED on   } } 
// ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) {   __bic_SR_register_on_exit(CPUOFF);        // Clear CPUOFF bit from 0(SR) } 

大家帮忙看下,或者你有你试验成功的上传一份哈。简单的就好。。谢谢 [ 本帖最后由 shaq 于 2011-11-1 09:16 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
shaq
2019-03-25 02:53
< :TI_MSP430_内容页_SA7 --> 您好。我把程序改成以下这样,去了中断,当把P1.1引脚加VCC的时候等还是不灭


#include "msp430g2231.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  ADC10CTL0 = SREF_0+ADC10SHT_3+ADC10ON + REFON; //选VCC为基准,16xADC10CLKS,ADC10 开,基准开
  ADC10CTL1=INCH_1+CONSEQ_0+ADC10DIV_1+ADC10SSEL_2;//选通道A1,2分频,MCLK
  ADC10AE0 |= BIT1 ;              //选择通道A1        
  P1DIR |= BIT0;                        

  while(1)
  {
    ADC10CTL0 |= ENC + ADC10SC;        //选转换使能+开始转换
    if (ADC10MEM < 0x1FF)
            
      P1OUT &=~ BIT0;                   //off   
    else
       P1OUT |=BIT0;       //on
                     
  }
}
谢谢您。

一周热门 更多>

相关问题

    相关文章