[PIC®/AVR®/dsPIC®产品] 各位大师求救,F883的ADC转换问题

[复制链接]
1020|1
 楼主| kimzz 发表于 2015-7-14 14:27 | 显示全部楼层 |阅读模式
使用16F883,ADC采集CH10和CH12两个通道。CH10通道值正常,CH12值比实际值大概高出一倍。请问会是什么原因造成的。
void ADC_init(void)      
{
    ADCON0 = 0xB1; //clock:FOSC/32; CH:12;  ADON:off
    ADCON1 = 0x80; //ADFM:right; VREF-:Vss; Vref+:VCC
    ANSELH = 0x14;
    TRISB |= 0x03;  //RB0,RB1 is input
}
unsigned int ADC_Data(void)
{
    unsigned int result;
    PIR1bits.ADIF = 0;  //clear ADIF
    ADCON0bits.GO_nDONE = 1;    //start ADC
    while(ADCON0bits.GO_nDONE == 1);
    result =(unsigned int)((ADRESH<<8) + ADRESL) ;
    return result;
}

使用MPLAB X IDE v3.05+XC8编译
yklstudent 发表于 2015-7-14 15:45 | 显示全部楼层
ADCON0bits.GO_nDONE = 1;    //start ADC
    while(ADCON0bits.GO_nDONE == 1);
这两句之间增加一些延时看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部