我确信我错过了一些简单而明显的东西,但我厌倦了寻找答案。我正在使用PIC16F688
和XC8
编译器。
编译器用户手册说有delay function __delay_ms()
。它说必须定义_XTAL_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);
答案 0 :(得分:2)
请包含“htc.h”
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <htc.h>
#define _XTAL_FREQ 20000000
int main(int argc, char** argv) {
_delay_ms(4);
return (EXIT_SUCCESS);
}
答案 1 :(得分:2)
他们是对的,老版本的IDE会遇到这个问题。我发现使用它很有帮助:
while(1){
//Invert LED state
LED = !LED;
//Delay ~1 second (4MHz Internal Clock)
_delay(1000000); //specify clock cycles directly
}
解决问题。
答案 2 :(得分:1)
这是什么意思“它不接受命令”?编译器找不到函数_delay_ms()
?也许你应该使用带有两个下划线的专有名称__delay_ms()
?
此外,为什么不关闭}
的主要功能?这只是你帖子或真实代码中的拼写错误?
答案 3 :(得分:0)
您可能必须在编译器中包含或启用pic Controller库文件。
在某些编译器中,使用ect。来提供控制器系列和时钟频率等控制器信息,
编译器设置似乎有问题。
答案 4 :(得分:0)
我发现IDE没有正确读取包含文件xc.h,所以它是红线实际上是正确的。由于该计划早期的另一个问题,它没有编译。
感谢您的回复。
答案 5 :(得分:0)
您似乎只使用了一个UNDERSCORE功能。使用2下划线, __ delay_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);
}
我希望以下链接可以帮助您学习MPLAB XC8。
答案 6 :(得分:0)
也许直接试试
//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)))