PIC18F25K80用mplab x 调试ad程序读数不正常,基准电源设外部电压、内部电压、得到的值一直都是10以下的数据,请大神帮忙看下哪里出问题了,万分感谢
外部晶振8M,ad通道是AN0
主程序:
while (1)
{
// Add your application code
Adresult=ADC_GetConversion(channel_AN0);//0V-5V 0-1024
ledshan(Adresult);IO_RB2_SetHigh();delay500ms();
}
子程序(是软件自动生成的):
adc_result_t ADC_GetConversion(adc_channel_t channel)
{
// Select the A/D channel
ADCON0bits.CHS = channel;
// Turn on the ADC module
ADCON0bits.ADON = 1;
// Start the conversion
ADCON0bits.GO_nDONE = 1;
// Wait for the conversion to finish
while (ADCON0bits.GO_nDONE)
{
}
// Conversion finished, return the result
return ((ADRESH << 8) + ADRESL);
}
初始化程序(系统自动生成的):
void PIN_MANAGER_Initialize(void)
{
/**
LATx registers
*/
LATA = 0x00;
LATB = 0x00;
LATC = 0x00;
/**
TRISx registers
*/
TRISA = 0xEF;
TRISB = 0xFB;
TRISC = 0xFF;
/**
ANSELx registers
*/
ANCON0 = 0x1F;
ANCON1 = 0x07;
/**
WPUx registers
*/
WPUB = 0xFF;
}
void OSCILLATOR_Initialize(void)
{
// SCS FOSC; HFIOFS not stable; IDLEN disabled; IRCF 8MHz_HF;
OSCCON = 0x60;
// SOSCGO disabled; MFIOSEL disabled; SOSCDRV Low Power;
OSCCON2 = 0x00;
// INTSRC INTRC; PLLEN disabled; TUN 0;
OSCTUNE = 0x00;
// ROSEL System Clock(FOSC); ROON disabled; ROSSLP Disabled in Sleep mode; RODIV Fosc;
REFOCON = 0x00;
// Set the secondary oscillator
}
void ADC_Initialize(void)
{
// set the ADC to the options selected in the User Interface
// GO_nDONE stop; ADON enabled; CHS AN0;
ADCON0 = 0x01;
// TRIGSEL ECCP1; VNCFG AVSS; VCFG internal_2.048V; CHSN AN0;
ADCON1 = 0x21;
// ADFM Right; ACQT 4_Tad; ADCS FOSC/8;
ADCON2 = 0x91;
// ADRESH 0;
ADRESH = 0x00;
// ADRESL 0;
ADRESL = 0x00;
} |