;------------------------------------------------------------------------------- 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。 我做错了什么?