用PIC24HJ128GP510芯片AD转换,在采集之后转换不了,DONE不能被置1
#include<p24HJ128GP510.h>
volatile static unsigned int LedNumVal=1059 ;
void lcddelay(unsigned char ms) //(3j+11)*i个指令周期
{
unsigned char i,j; //
for(i=ms;i>0;i--)
for(j=996;j>0;j--)
{;}
}
void initacd(void)
{
AD1PCFGL=0XfffF;
AD1PCFGH=0XFFFF;
AD1PCFGLbits.PCFG3=0; //AN3
TRISBbits.TRISB3=1;
AD1CON1=0X0000; //SHOU=1采样 SAMP=0开始转换
AD1CON2=0X0000; //Vadd Vss 1个采样产生一个中断
AD1CON3=0X0009; //9*Tcy=3*1/3us ;Fosc=6M;32*Tad
AD1CHS0=0X0003; //AN3
AD1CSSL=0;
AD1CON1bits.ADON=1; //开启AD模块
}
main(void)
{
while(1) //进入循环状态
{
initacd();
lcddelay(10);
AD1CON1bits.SAMP = 1;
lcddelay(10);
AD1CON1bits.SAMP = 0;
while(!AD1CON1bits.DONE);
LedNumVal = ADC1BUF0;
}
} |