接《MSP430學習筆記1-I/O端口》
開發版型號:SEED—MSP430F5529A
開發工具 :CCS 5.4v
以下內容是CCS中ADC12操作的一些簡單的demo,現整理如下:
有關MSP430F5529芯片ADC12相關資料,可參考《MSP430x5xx and MSP430x6xx Family User's Guide (Rev. M)——Chapter 28 ADC12_A》
1:demo描述
參考AVcc電壓、以A0定時器作為采樣輸入信號源的、單通道單次模式采樣,當采樣信號大於0.5*AVcc時,P1.0置位,否則為0。 代碼如下:Description: A single sample is made on A0 with reference to AVcc.
Software sets ADC12SC to start sample and conversion - ADC12SC
automatically cleared at EOC. ADC12 internal oscillator times sample (16x)
and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC12
conversion complete, ADC12_ISR will force exit from LPM0 in Mainloop on
reti. If A0 > 0.5*AVcc, P1.0 set, else reset.
#include <msp430.h> main( WDTCTL = WDTPW + WDTHOLD; ADC12CTL0 = ADC12SHT02 + ADC12ON; ADC12CTL1 = ADC12SHP; ADC12IE = ; ADC12CTL0 |= P6SEL |= ; P1DIR |= ; ( ADC12CTL0 |= ADC12SC; __bis_SR_register(LPM0_bits + GIE); __no_operation(); vector = ADC12_VECTOR __interrupt ADC12_ISR( (__even_in_range(ADC12IV, : ; : ; : ; : (ADC12MEM0 >= ) P1OUT |= BIT0; P1OUT &= ~BIT0; __bic_SR_register_on_exit(LPM0_bits); : ; : ; : ; : ; : ; : ; : ; : ; : ; : ; : ; : ; : ; : ; : }
2:代碼分析
1)主函數中代碼:
ADC12CTL0 = ADC12SHT02 + ADC12ON; ADC12CTL1 = ADC12SHP; ADC12IE = ; ADC12CTL0 |= ADC12CTL0 |= ADC12SC;參考控制寄存器如下: ADCSHT0x :采樣保持定時器0,該四位定義了保存在轉換存儲寄存器中轉換結果的采樣周期; ADC12ENC:轉換允許 ADC12SHP:選擇采樣定時器A0輸出 ADC12IE:中斷允許 (來自中斷允許寄存器)
2)中斷部分代碼:
中斷寄存向量ADC12IV中的數字(0-36)用來判斷中斷標志寄存器中相關位是否置位,此時表明轉換結果已經裝入轉換存儲寄存器中,具體數字的含義參見下圖:3)
(ADC12MEM0 >= ) P1OUT |= BIT0; P1OUT &= ~BIT0;參考電壓使用VCC,因為ADC精度為12位(4095),所以0x7FF(2047)就是0.5Vcc的AD值 StevenMeng 2013 6.14