打印

PIC16f多通道AD转换问题

[复制链接]
907|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ilovezqh|  楼主 | 2017-7-19 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ilovezqh 于 2017-7-19 13:22 编辑

uint16 advGet(uint8 iAdCh)
{
  uint16 uiRet;

  ADCON1 = B1010_0000;/* Left justified;VREF is connected to VDD; ADC Conversion Clock:FOSC/32 */
  ADCON0 = B0000_0001 | (iAdCh << 2);
  ADIE = 0;
  ADIF = 0;
  /* Need Add time for caiyang*/
// delayUs(200);
  ADRESL = 0;
  ADRESH = 0;
  __delay_us(10);
  ADGO = 1;
  
  while(ADGO);  
  uiRet = ADRESL;
  uiRet += (ADRESH << 8);

  return uiRet;
}

void main(void)
{
    uint8 i;
    uint16 uiBat;
    uint16 uiTemp;

    uiTemp = advGet(BAT1_AD_CH);
    uiTemp = advGet(BAT2_AD_CH);
    for(i=0;i<8;i++)
    {
        uiBat += advGet(BAT3_AD_CH);
    }
    uiBat >>= 3;
    uiTemp = advGet(BAT4_AD_CH);
    /* 为什么我得到的uiBat是错误的,求高手解答  */
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝