PIC和XC8编译器问题
我肯定我错过了一些简单而明显的东西,但我已经厌倦了寻找答案。Im使用PIC和XC8编译器问题,c,compiler-construction,delay,pic,microchip,C,Compiler Construction,Delay,Pic,Microchip,我肯定我错过了一些简单而明显的东西,但我已经厌倦了寻找答案。Im使用PIC16F688和XC8编译器 编译器用户手册中说有一个延迟函数\uuu delay\u ms()。它说必须定义\XTAL\u FREQ 这是我的代码,但它不接受命令。怎么了 #include <stdio.h> #include <stdlib.h> #define _XTAL_FREQ 20000000 #include<xc.h> int main(int argc, c
PIC16F688
和XC8
编译器
编译器用户手册中说有一个延迟函数\uuu delay\u ms()
。它说必须定义\XTAL\u FREQ
这是我的代码,但它不接受命令。怎么了
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 20000000
#include<xc.h>
int main(int argc, char** argv) {
_delay_ms(4);
return (EXIT_SUCCESS);
#包括
#包括
#定义频率20000000
#包括
int main(int argc,字符**argv){
_延迟时间(4);
返回(退出成功);
什么是“它不接受命令”?编译器找不到函数\u delay\u ms()
?也许您应该使用带有两个下划线的正确名称\u delay\u ms()
此外,为什么不使用
}
关闭主函数?这只是您的帖子或真实代码中的一个输入错误?可能是您必须在编译器中包含或启用pic控制器库文件
在某些编译器中,需要使用ect提供控制器信息,如控制器系列和时钟频率
编译器设置似乎有问题 我发现IDE没有正确读取include文件xc.h,因此它在一行红色的线中画了一条实际上是正确的线。由于程序早期的另一个问题,它没有编译 感谢您的回复。请包括“htc.h”
#包括
#包括
#包括
#包括
#定义频率20000000
int main(int argc,字符**argv){
_延迟时间(4);
返回(退出成功);
}
他们是对的,这个问题是旧版本的IDE遇到的。我发现使用以下工具很有帮助:
while(1){
//Invert LED state
LED = !LED;
//Delay ~1 second (4MHz Internal Clock)
_delay(1000000); //specify clock cycles directly
}
要解决此问题。函数似乎只使用了一个下划线。使用2下划线,\u延迟\u ms(1000)强>
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#define _XTAL_FREQ 20000000
int main(int argc, char** argv) {
__delay_ms(4);
return (EXIT_SUCCESS);
}
#包括
#包括
#包括
#定义频率20000000
int main(int argc,字符**argv){
__延迟时间(4);
返回(退出成功);
}
我希望下面的链接将帮助您学习MPLAB XC8
也许可以直接试试这个
//Delay Definitions
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
试着定义“被包括在内”后的含义,但不确定。谢谢你的建议。你是如何测试你的延迟发生的?4毫秒的延迟太少了。我还没走那么远。这只是一个随机数,直到我知道更多。我正在写代码,但实际的延迟取决于我正在做的一些实验。该代码将为电容器组充电,然后将电荷释放到一些Nycrome导线中。您好,感谢您的回复。您提到的两件事都是上述代码中的打字错误。实际的ode确实有_uu,并且它是关闭的。错误是它没有编译,IDE(MPLab X)的实际错误是“无法解析标识符”。那是什么问题?解决办法是什么?
//Delay Definitions
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))