;-------------------------------------------------------------------------------
ORG 08000h ; Program Reset
;-------------------------------------------------------------------------------
;******************************************************************************
#include "msp430fr2355.h"
;-------------------------------------------------------------------------------
RESET mov #03000h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW|WDTHOLD,&WDTCTL ; Stop WDT
MeasurePulse
clr &ADCMCTL0
mov #ADCSHT_1+ADCON,&ADCCTL0
mov #ADCDIV_1,&ADCCTL1
mov #ADCRES_2,&ADCCTL2
mov.b #0FFh,&P1DIR
mov.b #0FFh,&P1SEL0
mov.b #0FFh,&P1SEL1
A2DConversion
bic #ADCIFG0,&ADCIFG
bis #ADCENC+ADCSC,&ADCCTL0
A2DLoop
bit #ADCIFG0,&ADCIFG
jz A2DLoop
bic #ADCENC+ADCSC,&ADCCTL0
mov &ADCMEM0,R4
ret
;-------------------------------------------------------------------------------
ORG 0FFFEh
DW RESET
END
这是我针对 MSP430FR2355的代码。 它会从 A0进行 A/D 读取。 我在开始转换之前清除 ADCIFG0标志。 然后我会轮询 ADCIFG0标志以查看转换何时完成、但转换从未从 A2DLoop 分段中结束。 ADCIFG0标志始终保持0。 我做错了什么?