?? adc10_sch_rt.s43
字號:
#include "msp430x20x2.h"
;此程序是用ADC10單通道多次方式測片內溫度二極管的電壓
;連續作了10次AD并將結果存在ad_value的數組中
;調試程序并觀察ADC10MEM及ad_value的數值
; MSP430F20x2
; -----------------
; /|\| XIN|-
; | | |
; --|RST XOUT|-
; | |
; |A10 (Temp) P1.0|-->LED
;-------------------------------------------------------------------------------
ADCDeltaOn EQU 3 ;當AD采樣值高于第一次AD值+ADCDeltaOn時,P1.0輸出高電平
;-------------------------------------------------------------------------------
NAME main
PUBLIC main
;-------------------------------------------------------------------------------
; MSP430F22x中斷向量表
;-------------------------------------------------------------------------------
ORG 0FFFEh
DC16 main
ORG 0FFEAh ;ADC10中斷向量
DC16 adc10_isr
ORG 0FFF2h ;TIMER_A1中斷向量
DC16 ta0_isr
;------------------------------------------------------------------------------
RSEG CODE ;程序開始
;------------------------------------------------------------------------------
main MOV.W #0600H,SP ;設置堆棧指針
stopWDT MOV.W #WDTPW+WDTHOLD,&WDTCTL ;關看門狗
MOV.B &CALBC1_1MHZ,&BCSCTL1 ;設定DCO為1MHZ
MOV.B &CALDCO_1MHZ,&DCOCTL
;時鐘源選AD內部時鐘并4分頻,選通道10,AD啟動信號來源選TA.OUT1,選單通道連續采樣
MOV.W #ADC10DIV_3+INCH_10+SHS_1+CONSEQ_2,&ADC10CTL1
;選2.5V為正向參考,地為負參考,AD中斷使能,打開參考,啟動AD模塊(不是啟動AD轉換)
MOV.W #SREF_1+ADC10SHT_3+REF2_5V+ADC10IE+REFON+ADC10ON,&ADC10CTL0
MOV.W #30,&TACCR0 ;延時等待參考穩定
BIS.W #CCIE,&TACCTL0 ;CCR0中斷使能
MOV.W #TACLR+MC_1+TASSEL_2,&TACTL;TA增計數,時鐘源為smclk
BIS.W #LPM0+GIE,SR ;進入低功耗0,使能總中斷
BIC.W #CCIE,&TACCTL0 ;CCR0中斷禁止
DINT ;關總中斷
BIS.W #ENC,&ADC10CTL0 ;AD轉換使能
MOV.W #OUTMOD_4,&TACCTL1 ;CCR1選輸出模式4,當TAR=0時,輸出高電平
MOV.W #TASSEL_2+MC_2,&TACTL ;TA改為連續計數,smclk時鐘源
ADC_wait BIT.W #ADC10IFG,&ADC10CTL0 ;測試第一次轉換是否結束
JZ ADC_wait
MOV.W &ADC10MEM,R4 ;讀出第一次AD轉換的值
ADD.W #ADCDeltaOn,R4 ;將AD值加上ADCDeltaOn
CLR.B &P1OUT
BIS.B #01h,&P1DIR
mainloop BIS.W #LPM0+GIE,SR ;進入低功耗0,使能總中斷
NOP ;用于調試
;-------------------------------------------------------------------------------
ta0_isr; ISR for TACCR0
;-------------------------------------------------------------------------------
CLR.W &TACTL ;TA停止計數
BIC.W #LPM0,0(SP) ;退出低功耗
RETI
;-------------------------------------------------------------------------------
adc10_isr;
;-------------------------------------------------------------------------------
CMP.W R4,&ADC10MEM ;當AD采樣值高于第一次AD值+ADCDeltaOn時,P1.0輸出高電平
JLO adc_isr_1
BIS.B #01h,&P1OUT
RETI
adc_isr_1 BIC.B #01h,&P1OUT ;否者清p1.0
RETI
END main
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -