完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用的是30针脚(AN15/OCFB/CN12/RB15) 代码如下: #define uchar unsigned char #define uint unsigned int uint adcValue; void InitADC(void) { TRISB=0XFFFF; // PORTB INPUT AD1PCFGL=0x0000; // Analog Input AD1CON1bits.ADSIDL= 0; //AD模块一直工作,即使在空闲模式 AD1CON1bits.AD12B = 0; //ADC工作在10BIT模式 AD1CON1bits.ASAM = 0; //选择了手动采样模式,当SAMP位置1后才开始采样 AD1CON2bits.VCFG = 0; //参考电压选择,bit15:13,000选择电源参考,001表示Vref+ AD1CON3bits.ADRC = 1; //1表示使用内部RC时钟,0表示使用系统FOSC时钟 AD1CON3bits.ADCS = 31; //调节Tcy与Tad的关系,范围0~63,63是最慢的 AD1CON2bits.CSCNA = 0; //不自动扫描输入 AD1CON2bits.CHPS = 0; //同时扫描的通道数,现在只选择了一个CH0 AD1CON1bits.SSRC = 7; //转换触发源选择位,111表示采样结束自动转换 AD1CON3bits.SAMC = 0; //自动采样时间为31个Tad,范围0~31 AD1CON1bits.FORM = 0; //数据格式,整数格式,右对齐 AD1CON2bits.ALTS = 0; //总是使用多路开关A来作为通道选择位 AD1CHS0bits.CH0NA = 0; //通道0的反向输入端为-Vref,这里为地。 AD1CON1bits.ADON = 1; //打开ADC模块 } //=========================读取一个通道的值============================== uint ReadADC(uchar ch) { AD1CHS0bits.CH0SA = ch; //0~15分别表示选中16个通道之一 AD1CON1bits.SAMP = 1; //开始采样,采样结束后自动开始转换 while(!AD1CON1bits.DONE); //此位为0表示正在采样中 AD1CON1bits.DONE = 0; //也可以不清零,在新的转换开始时,硬件自动清零 adcValue=ADC1BUF0&0x03ff; return adcValue; } 这个针脚是不是还有其它什么地方需要配置的呢?请高手指点!!!! |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2084 浏览 1 评论
3629 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2336 浏览 2 评论
2763 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4027 浏览 5 评论
973浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6360浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 23:40 , Processed in 0.349860 second(s), Total 42, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号