完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
HII,我在PIC 16F67 6的ADC中遇到问题,我使用XC8编译器和MPLAB IDE 8.92。我使用的是4 MHz的内部振荡器。我想打开ADC时,ADC读取一些值,但它不工作。请帮助#ifndef_XTAL_XTAL_FREQ//除非在其他地方指定,否则假设4MHz系统频率为4MHz,假设为#定义_XTAL_FREQ 4000000#XTAL_XTAL_FREQ 4000000#定义//PIC16F676F676配置位设置//PIC16F67666配置位设定///C’源线配置语句#包括<< xc.h>\#包括< xc.h>\#xc.h>\#xc.h>#xc.h>\#include"p"“owerup.as”//pragma配置语句应该在项目文件包括.//Use项目枚举之前,而不是define for ON和OFF.//CON.pragma config FOSC=INTRCIO//振荡器选择位(INTOSC振荡器:RA4/OSC2/CLKOUT管脚上的I/O函数,RA5/OSC1/CLKIN上的I/O函数)pragma config WDTE=OFF//看门狗定时器启用位(WDT禁用)#pragma配置PWRTE=OFF//上电定时器启用位(PWRT禁用)#pragma配置MCLRE=ON//RA3/MCLR管脚功能选择(RA3/MCLR管脚功能是MCLR)#pragma配置BOREN=OFF//褐色检测启用位(BOD禁用)#pragma config CP=OFF//代码保护位(程序内存代码保护被禁用)#pragma配置CPD=OFF//数据代码保护位(数据内存代码保护被禁用)#define pv_sense 5//pin no 9 AN5#define._Batt_sense 6//pin no 8 AN6#define output_control RC5//pin no 5#define pv_i指示RC4//pin no 6unsigned int t,x,y,z;void init_a2d(void){ADCON1=0x 1 0;/*set FOSC/8作为ADC时钟源*/GIE=0;ADON=1;ADFM=1;ANSEL=0x60;}unsigned char read_a2d(unsigned char.){volatile unsigned int result=0;DelayMs(20);ADRESL=0;/*重置ADRES值寄存器*/ADRESH=0;.&0x0F;ADCON0&0x83;延迟量(10);ADCON0|延迟量(10);ADCON0|__=(频道<<<<<<2;ADCON0|=(频道<<<<<2);GO_DONE=0;延迟(5);GO_DONE=1;GO_DONE=1;;(GO_DONE)继续;继续;结果=((ADRESH<;<;8)+ADRESH<;+ADRESL)+ADRESL)&0x03ff;0x03ff;返回(结果);}无效延迟量延迟量15({i+)DelayMs(250);}void Init_PIC(void){INTCON=0;/*关闭中断*/PIE1=0;CMCON=0x07;/*关闭中断*/PIE1=0;CMCON=0x07;/*关闭比较器*/VRCON=0X07;/*关闭比较器*/VRCON=0X83;TRISA&&;TRISA;TRISA=0x08;TRISC=0x06;0x06;PORTA=0x08;PORTC=0x00;0x00;nRAPU=0;IOCA=0;OSCA=0;OSCCAL=0;OSCCAL=0xFF;0;OSCCAL=0xFF;0xFF;0xFF;}void main({:1;#asmCALL 3FFh//获取cal valueMOVWF OSCCAL//Calibrat#CCAL//Calibrate#CCAL//OSCCAL=0x3C,RP0*/Init_PIC();init_a2d();init_a2d();init_a2a();init_aIt_a2d();init_aIt_a2d();init_a_it_a2a_a2d();init_a_aaaaa2d();init_aaaaaaaa2d(;1){{y=y=y=read_读取_a2a2a2a2d2d(6);DelayMs(50);延迟(50);延迟(50);x=读取读取_a2a2d(5);如果5V 2 RA5 3 RA4/AN3 4 MCLR连接与程序员5RC5免费6RC4免费7RC3AN7ADc8RC2AN6ADc9RC1AN5adc10RC0AN4adc11RA2AN2adc12RA1AN1adc13RA0ADc14VSSOVolt*/}
|
|
相关推荐
3个回答
|
|
欢迎来到微芯片社区。我没有发现问题,但有一些建议,让我分享:值得熟悉“如何以聪明的方式提出问题”。尤其是你的:“它不起作用”既不是对问题的良好描述,也不是对问题的良好调查。在定义大值时,应该使用适当的后缀。这个错误可能会破坏您的延迟,因为将大整数截断为标准XC8 int类型。请尽量不要在代码中使用“魔术数字”。XC8报头有一组详尽的SFR位定义,它们可以组合成清晰的集合。看一下只有一个ADCON0寄存器的SFR定义变体:每个二进制值由它的名称、位置、掩码和大小(长度)来描述。您可以在表达式中使用这些定义,这些表达式将由编译器对常量进行评估和更改。例如,你可以写下ADCON0&=0x83,而不是ADCON0&=0x83:这个值比“魔术数字”更清晰。使用[code][/code]标记(没有空格)在消息中显示代码。我不能检查您的代码,至少在您进一步详细说明任务之前,不能处理问题。你的芯片在运行吗?你怎么检查的?
|
|
|
|
这不成问题。数字甚至可以是浮点,因为它是由XC8宏处理器处理的,而不是指令计算器。
|
|
|
|
嗨,荒山亮。我不确定XC8预处理器,但我被Microchip工具XC8或XC16中的一个打败了。花了几个小时才发现这个细微差别。我考虑所有的值作为整数,除非明确定义其他。直到你的文章,我认为这也是真实的预处理器。
|
|
|
|
只有小组成员才能发言,加入小组>>
5160 浏览 9 评论
1998 浏览 8 评论
1927 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3170 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2225 浏览 5 评论
727浏览 1评论
612浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
501浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
626浏览 0评论
524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:23 , Processed in 1.242520 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号