PIC和XC8编译器问题

时间:2013-12-24 07:09:35

标签: c compiler-construction delay pic microchip

我确信我错过了一些简单而明显的东西,但我厌倦了寻找答案。我正在使用PIC16F688XC8编译器。

编译器用户手册说有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);

7 个答案:

答案 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。

PIC Microcontroller Tutorials using 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)))