查看: 2384|回复: 0

ad测量通过串口发出的程序,只能发出FF

[复制链接]
  • TA的每日心情
    奋斗
    2013-8-19 10:01
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-8-14 16:29:00 | 显示全部楼层 |阅读模式
    分享到:
    我用AD采样,然后想通过串口发出,结果只能得到FF。大家帮我看看那里出现了问题,谢谢
    #include  "msp430g2553.h"
    #define uchar unsigned char

    long temp;


    void uart_init(void)
    {
            BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
            DCOCTL = CALDCO_1MHZ;
            P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
            P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
            UCA0CTL1 |= UCSSEL_2;                     // SMCLK
            UCA0BR0 = 104;                            // 1MHz 9600
            UCA0BR1 = 0;                              // 1MHz 9600
            UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
            UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
            IE2 |= UCA0TXIE;                          // Enable USCI_A0 RX interrupt
    }

    void main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      uart_init();
      ADC10CTL1 = INCH_1 + ADC10DIV_3;         // Temp Sensor ADC10CLK/4
      ADC10AE0 |= 0x02;                         // PA.1 ADC option select
      P1DIR |= 0x01;                            // Set P1.0 to output direction

      ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
      __enable_interrupt();                     // Enable interrupts.
      TACCR0 = 30;                              // Delay to allow Ref to settle
      TACCTL0 |= CCIE;                          // Compare-mode interrupt.
      TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
      LPM0;                                     // Wait for delay.
      TACCTL0 &= ~CCIE;                         // Disable timer Interrupt
      __disable_interrupt();

      while(1)
      {
        ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
        __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled

        // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
        temp = ADC10MEM;
        __no_operation();                       // SET BREAKPOINT HERE
      }
    }

    // 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)
    }

    #pragma vector=TIMER0_A0_VECTOR
    __interrupt void ta0_isr(void)
    {
      TACTL = 0;
      LPM0_EXIT;                                // Exit LPM0 on return
    }

    #pragma vector=USCIAB0TX_VECTOR
    __interrupt void USCI0TX_ISR(void)
    {
            while (!(IFG2&UCA0TXIFG));
            UCA0TXBUF =temp;
      //if(i==sizeof string1-1)
            //  i=0;
    }
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 23:58 , Processed in 0.105902 second(s), 14 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.