📄 adc10.c
字号:
#include "adc10.h"
unsigned int ADCValue;
void adc10_initAN2(void)
{
ADCON1bits.ADON=0;//turn off ADC
ADCSSL=0;
_TRISB2=INPUT;
ADPCFG&=0xFFFB;// RB0 = analog
//ADCHS=0x0002;//Connect RB2/AN2 as CH0 input and also connect RB2/AN2
ADCHSbits.CH0SA = 0b0010;//AN2 positive input
ADCHSbits.CH0NA = 0;//Negative input VREF-
ADCHSbits.CH123SA=0;//positive input CH1-AN0, CH2-AN1, CH3-AN2
ADCHSbits.CH123NA=0;//Negative input VREF-
ADCHSbits.CH0SB = 0b0010;//AN2 positive input
ADCHSbits.CH0NB = 0;//Negative input VREF-
ADCHSbits.CH123SB=0;//positive input CH1-AN0, CH2-AN1, CH3-AN2
ADCHSbits.CH123NB=0;//Negative input VREF-
ADCON3bits.ADCS=0b01101;//Select TCY/2*Conversion Clock
ADCON3bits.ADRC = 0 ; //SYSTEM CLOCK
ADCON3bits.SAMC = 0;//0B00111;//AUTOSAMPLE TIME SAMC*TAD
//ADCON2=0x6104;//Select external VREF+ and VREF- pins, convert CH0
ADCON2bits.ALTS=0;//USE MUXA ONLY
ADCON2bits.BUFM=0;//16bit buffer
ADCON2bits.SMPI=0b0000;//4 sample per INT
ADCON2bits.CHPS=0b00;//convert CH0, CH1, CH2, CH3
//0b00 convert CH0
//0b01 convert CH0, CH1
ADCON2bits.CSCNA=0;//do not scan input
ADCON2bits.VCFG = 0b011;//VREF+ VREF-
_TRISB0=INPUT;//Vref
_TRISB1=INPUT;//Vref
//ADCON1=0x00E0;//SSRC bit = 111 implies internal
ADCON1bits.SAMP=1;//A/D Sample Enable bit
ADCON1bits.ASAM=1;//A/D Sample Auto-Start bit
ADCON1bits.SIMSAM=0;//sample in sequence
ADCON1bits.SSRC= 0b111;//Internal counter ends sampling and starts conversion (auto convert)
ADCON1bits.FORM=0b00;//00 = Integer (DOUT = 0000 00dd dddd dddd)
//Clear the A/D interrupt flag bit
IFS0bits.ADIF = 0;
//Set the A/D interrupt enable bit
IEC0bits.ADIE = 1;
}
void __attribute__((interrupt, __auto_psv__)) _ADCInterrupt(void)
{
ADCON1bits.ADON=0;//turn off ADC
ADCValue = ADCBUF0;//(ADCBUF0+ADCBUF1+ADCBUF2+ADCBUF3)/4;//+ADCBUF4+ADCBUF5+ADCBUF6+ADCBUF7;
ADCON1bits.ADON=1;//turn on ADC
IFS0bits.ADIF = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -