3314|2

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于pic30f4011的adc单通道多模拟输入 [复制链接]

最近需要用到4011自带的adc,然后再官方例程的基础上将程序进行修改,想实现用通道0来处理3个模拟输入,现在的问题是当执行到第三个转换的时候直接又从for语句重新开始。并没有产生中断,转换也没有完成。程序挺简单的,但是不知道哪里没有改好,希望大神帮忙看一下。谢谢下面贴上我的代码



#include

_FOSC(CSW_FSCM_OFF&XT_PLL4);//4分频

_FWDT(WDT_OFF);


_FBORPOR(PBOR_OFF&MCLR_EN);
_FGS(CODE_PROT_OFF);

#define Fcy 73728

void delay(unsigned int z)
{
        unsigned int x,y,t;
        for(x=z;x>0;x--)
          for(y=300;y>0;y--);

}

void ConfigAdc()//只转换一个通道,不仅要选择通道还要设置通道的输入类型(配置只需要配置这6个方面即可)
{
  ADCON1=0x0004;//关闭adc,数据输出的是整数,采用时钟计数,每次转换完成后继续自动采样,转换未完成,按顺序采集多个输入
  ADCON2=0x0408;//选择通道CH0,只是用这一个通道,每完成3个转换完成后产生中断其余的置零
  ADCON3=0x1fbf;//采集时间是31TAD,TAD=31Tcy,使用rc时钟
  ADCHS=0x0000;//选择通道CH0
  ADPCFG=0xfff8;//选择RN0,RN1,RN2的输入模式为模拟输入其余的为数字输入
  ADCSSL=0x0007;//对an0,an1,an2输入进行扫描
  IEC0bits.ADIE=1;//给adc后的中断使能
  IPC2bits.ADIP=7;//给adc的中断设置优先级
  IFS0bits.ADIF=0;
}


//这里需要初始化一下lcd;
void _ISR _AdcInterrupt(void)
{
  IFS0bits.ADIF=0;//清除flag即可
}


int main(void)
{
  unsigned int T,I,U,cnt;
  ConfigAdc();
  ADCON1bits.ADON=1;
  TRISB=1;
  while(1)
{
  while(!ADCON1bits.SAMP);//确定第一个信号已经采集好了
        for(cnt=0;cnt<3;cnt++)
    {
     while(!ADCON1bits.SAMP);//为了确定第二个第三个信号采集完成
     ADCON1bits.SAMP=0;//开始转换
     delay(100);//等待转换完成   
    }

    while(!ADCON1bits.DONE);//三次循环后判断一次ad转换完成
    T=ADCBUF0;
    U=ADCBUF1;

}
}

最新回复

据我对PIC的ADC模块了解,ADC转换,需要设置启动转换位的,但你的程序中未看到此条语句,请核对下.  详情 回复 发表于 2017-5-16 16:39
点赞 关注
 

回复
举报

664

帖子

104

TA的资源

纯净的硅(中级)

沙发
 
找个例程看看吧,你这程序,看着让人不知道所措。
 
 
 

回复

638

帖子

2

TA的资源

版主

板凳
 
据我对PIC的ADC模块了解,ADC转换,需要设置启动转换位的,但你的程序中未看到此条语句,请核对下.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表