打印

为什么编译不成功呢?(附程序)

[复制链接]
7283|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hwq2003|  楼主 | 2010-11-3 22:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hwq2003 于 2010-11-3 23:01 编辑

我是一个新手,最近学PIC,我输进去下面的程序,点击BUILD编译后,怎么会显示Error   [141] D:\lisson1.c; 1.21 can't open include file "pic16f877.h": No such file or directory
********** Build failed! **********


请问这个事什么原因呢?
时程序错了,还是IDE操作有错?




#include<pic16f877.h>
void delay< >           //延时函数
  {
   unsigned  int i,j ;
for(i=0;i<1000;i++);
for(j=0;i<110;j++);
}
void fmqi< >         //蜂鸣器输出函数
   {
        TRISD=0x00;      //给端口低电平
  delay< 1>;       //给端口低电平延时1ms
  TRISD=0x80;      //给端口高电平
  }
  void main <void>
       { while(1)
   fmqi< >
   }
沙发
一级菜鸟| | 2010-11-3 22:56 | 只看该作者
头文件包含错误

使用特权

评论回复
板凳
hwq2003|  楼主 | 2010-11-3 22:57 | 只看该作者
2# 一级菜鸟



那应该写什么才对呢?

使用特权

评论回复
地板
headwolf_83| | 2010-11-4 08:06 | 只看该作者
#include <pic.h>编译器自然会找到对应的具体头文件,而且也只有这样才可以使用CLRWDT之类的一些宏

使用特权

评论回复
5
chen3bing| | 2010-11-4 09:23 | 只看该作者
#include<pic1687x.h>

使用特权

评论回复
6
paifeng253625| | 2010-11-6 16:11 | 只看该作者
本帖最后由 paifeng253625 于 2010-11-6 16:24 编辑

#include<pic.h>
__CONFIG(0x3ffah);
void delay(unsigned int z)           //延时函数
{
    unsigned  int i,j ;
for(i=z;i> 0;i--)
  for(j=110;j>0;j--);
}
void fmqi(void)         //蜂鸣器输出函数
{

PORTD = 0x00;
    delay(100);       //给端口低电平延时1ms
PORTD = 0xff;
delay(100);

}
void main(void)
{
TRISD=0x00;      //给端口低电平
PORTD = 0x00;
while(1)
{
  
     fmqi();
}
}

使用特权

评论回复
7
chenkaiyan| | 2010-11-28 14:53 | 只看该作者
应该是PICC安装路径有问题,文件夹不能有汉字,而且你在MPKAB软件中看project菜单栏里面set language里面的路径是不是正确

使用特权

评论回复
8
谈的元| | 2010-11-28 22:02 | 只看该作者
5楼正确
头文件一般在C:\Program Files\HI-TECH Software\PICC\9.50\include中
而其中pic16h877.h这个文件根本不存在。

使用特权

评论回复
9
yewuyi| | 2010-11-29 00:34 | 只看该作者
mplab+picc的组合对C进行编译,不可以#include<pic16f877.h>,而应该直接#include<pic.h>,并同时在MPLAB的CONFIG窗口选择芯片型号为PIC16F877,然后进行编译即可,PICC会自动根据设置的这个型号去选择正确的H文件。

使用特权

评论回复
10
XIEYUANBIN| | 2010-11-29 09:05 | 只看该作者
上面的列位,头文件这样包含也并无错误,只是繁复了一点,但真正的错误是他把圆括弧全部写成尖括弧了。
delay< 1>;       //给端口低电平延时1ms
  TRISD=0x80;      //给端口高电平
  }
  void main <void>

使用特权

评论回复
11
Light_David| | 2010-12-1 00:40 | 只看该作者
mplab+picc的组合对C进行编译,不可以#include,而应该直接#include,并同时在MPLAB的CONFIG窗口选择芯片型号为PIC16F877,然后进行编译即可,PICC会自动根据设置的这个型号去选择正确的H文件。 ...
yewuyi 发表于 2010-11-29 00:34
叶版这句话早点看见多好,记得当时自己搞一个小玩意用的12F675,使用端口中断那个IOC寄存器,说未定义。搞得我郁闷半天,最后就才想到一窥pic.h的究竟,打开一看顿时茅塞顿开,呵呵。对应找到其调用的定义文件,打开一看IOC 被定义为IOCB,,,,,NND

使用特权

评论回复
12
qixian1988| | 2010-12-2 16:18 | 只看该作者
:L

使用特权

评论回复
13
zdhlixiang2006| | 2010-12-3 22:19 | 只看该作者
试试<pic16.h>

使用特权

评论回复
14
qzhui121| | 2010-12-21 14:18 | 只看该作者
头文件,看来得好好看看

使用特权

评论回复
15
diweo| | 2010-12-31 15:34 | 只看该作者
基本概念没搞清楚

使用特权

评论回复
16
komad| | 2011-1-1 19:50 | 只看该作者
上面的列位,头文件这样包含也并无错误,只是繁复了一点,但真正的错误是他把圆括弧全部写成尖括弧了。
delay< 1>;       //给端口低电平延时1ms
  TRISD=0x80;      //给端口高电平
  }
  void main  ...
XIEYUANBIN 发表于 2010-11-29 09:05


根本就没那个头文件.尖刮号,这错了

使用特权

评论回复
17
tiaomiaodu| | 2011-1-8 22:53 | 只看该作者
呵呵呵,高手的,mark,之前我也被这个搞过的

使用特权

评论回复
18
yewuyi| | 2011-1-9 10:43 | 只看该作者
大家这么热烈,我就把它说清楚吧。
如图是C:\Program Files\HI-TECH Software\PICC\9.50\include中PIC.H文件中的内容。

如果你一定要采用顶楼直接包含芯片型号的包含方式,那你只需要找到这个文件中pic1687x.h这个文件并直接包含它就可以了。
当然,具体是用<>还是''这个你自己去弄清楚吧,这个东西总不至于让别人教你。

如果直接PIC.H,那么MPLAB会自动根据你在MPLAB中config配置里面的芯片型号去找到对应的头文件。

MCHP为了方便大家移植代码,所以统一做成了PIC.H,呵呵,也蛮好的哦。

Image00614.jpg (131.13 KB )

Image00614.jpg

使用特权

评论回复
19
hwq2003|  楼主 | 2011-2-13 11:33 | 只看该作者
各位大侠,我得好好学了!

使用特权

评论回复
20
1831249703| | 2014-8-1 09:12 | 只看该作者
yewuyi 发表于 2011-1-9 10:43
大家这么热烈,我就把它说清楚吧。
如图是C:\Program Files\HI-TECH Software\PICC\9.50\include中PIC.H文 ...

你好,版主,我刚学mplab,能帮我看看这个吗https://bbs.21ic.com/forum.php?mod=viewthread&tid=778268&extra=

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:51单片机、ARM、PIC单片机、51单片机与C语言书籍提供商!   http://shop35424847.taobao.com/

24

主题

87

帖子

0

粉丝