ANSELAbits.ANSA0 = 1; //确认AN0为模拟输入口
AD1CON1bits.FORM = 3; //定义输出形式为整数
AD1CON1bits.SSRCG = 0;
AD1CON1bits.SSRC = 0; //设置转换为手动模式
AD1CON1bits.ASAM = 0; //SAMP置1开始转换
AD1CON1bits.AD12B = 1; // 12-bit ADC 操作模式
AD1CON1bits.ADDMABM = 0; // DMA buffers are built in conversion order mode
AD1CON2bits.CHPS = 0; // 转换CH0
AD1CON2bits.VCFG = 0;
//AD1CON2bits.CSCNA = 1; //扫描采样多路开关A 选择的CH0+ 输入
//AD1CON2bits.BUFM = 0; //总是从起始地址开始填充缓冲区
AD1CON2bits.ALTS = 0; //总是使用采样多路开关A 选择的输入通道
AD1CON3bits.ADRC=0; // ADC 时钟来自系统时钟
AD1CON3bits.ADCS = 63; // ADC Conversion Clock Tad=Tcy*(ADCS+1)= (1/40M)*64 = 1.6us (625Khz)
// ADC Conversion Time for 12-bit Tc=14*Tad = 22.4us
AD1CON4bits.ADDMAEN = 0; // 转换结果存储在ADC1BUF0-ADC1BUFF中,不使用DMA
// AD1CON4bits.DMABL = 1; //为每个模拟输入的 DMA 缓冲单元数量分配两个字的缓冲区
AD1CON2bits.SMPI = 0; // 转换或采样一次后产生中断
//AD1CHS0: A/D Input Select Register
AD1CHS0bits.CH0SA=0; // 通道0同相输入位为AN0
AD1CHS0bits.CH0NA=0; // 通道0反相输入为VREFL
//AD1PCFGH/AD1PCFGL: Port Configuration Register
//AD1PCFGL=0xFFFF;
//AD1PCFGH=0xFFFF;
//AD1PCFGLbits.PCFG5 = 0; // AN5 as Analog Input
IFS0bits.AD1IF = 0; //清除 A/D 中断标志位
IEC0bits.AD1IE = 0; // 不使能 A/D 中断
AD1CON1bits.ADON = 1; // A/D 转换开始
Delayus(30);
以上为我对PIC24E,ADC的设置,能取到值但就是不对,麻烦哪位大牛帮忙看下,刚接触,请多指教... |