打印

求助:在win7下使用MPLAB的问题

[复制链接]
9010|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rain_King|  楼主 | 2013-3-18 19:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Rain_King 于 2013-3-19 13:43 编辑

前几天刚在win7下安装了MPLB IDE,由于是初次接触,不是很熟悉。
问题如下:
在我进行编译的时候怎么每次都提示这个错误:

Error   [277] D:\Program Files (x86)\HI-TECH Software\PICC\9.80\include\eeprom_routines.h; 43.50 can't mix prototyped and non-prototyped arguments
Error   [372] D:\Program Files (x86)\HI-TECH Software\PICC\9.80\include\eeprom_routines.h; 43.57 "," expected
Error   [372] D:\Program Files (x86)\HI-TECH Software\PICC\9.80\include\eeprom_routines.h; 44.29 "," expected
Error   [277] D:\Program Files (x86)\HI-TECH Software\PICC\9.80\include\eeprom_routines.h; 44.29 can't mix prototyped and non-prototyped arguments
Error   [313] D:\Program Files (x86)\HI-TECH Software\PICC\9.80\include\eeprom_routines.h; 44.94 function body expected

即使我使用最简单的程序,也有这个问题,我揣测是设置问题,可是我找不到,求解决.....
示例的程序是这个:
#include<pic.h>
void main(void)
{
int a=1;
}


PS:
extern void eecpymem(volatile unsigned char *to, eeprom unsigned char *from, unsigned char size);
extern void memcpyee(eeprom unsigned char *to, const unsigned char *from, unsigned char size);
我双击错误之后,会指向这两条代码的地方,如果我把这个给注释掉,就不会提示这个错误,但是我想问的是,这个有什么错误,这两条代码是软件本身的eeprom_routines.h头文件里的。

沙发
Rain_King|  楼主 | 2013-3-19 11:43 | 只看该作者
求支持..............

使用特权

评论回复
板凳
yklstudent| | 2013-3-19 12:09 | 只看该作者
上程序 你发这个 让别人跟你猜谜啊

使用特权

评论回复
地板
Rain_King|  楼主 | 2013-3-19 12:59 | 只看该作者
yklstudent 发表于 2013-3-19 12:09
上程序 你发这个 让别人跟你猜谜啊

#include<pic.h>
void main(void)
{
int a=1;
}
就是这样简单的程序,估计没法在简单了,也出错,原因和帖子的一样

使用特权

评论回复
5
l4157| | 2013-3-19 13:25 | 只看该作者
八成是你的eeprom_routines.h头文件有问题,有时中文输入法的字符和英文输入法产生的貌似一样其实不一样!

使用特权

评论回复
6
Rain_King|  楼主 | 2013-3-19 13:36 | 只看该作者
l4157 发表于 2013-3-19 13:25
八成是你的eeprom_routines.h头文件有问题,有时中文输入法的字符和英文输入法产生的貌似一样其实不一样! ...

可是eeprom_routines.h这个头文件是系统提供的啊!!!!就是说是软件本身提供的...应该不会错的...

使用特权

评论回复
7
mahui843| | 2013-3-19 14:21 | 只看该作者
你指定芯片型号了吗?指定芯片型号后,再代码前面加上 #define _芯片型号_试试,比如#define _16f877_,在菜单configure->select device,选择你要使用的芯片型号

使用特权

评论回复
评论
Rain_King 2013-3-24 22:44 回复TA
算你一个 
8
Rain_King|  楼主 | 2013-3-19 14:50 | 只看该作者
mahui843 发表于 2013-3-19 14:21
你指定芯片型号了吗?指定芯片型号后,再代码前面加上 #define _芯片型号_试试,比如#define _16f877_,在菜 ...

#define _16f877_是什么定义,其次我已经选择芯片了!!!!

使用特权

评论回复
9
Rain_King|  楼主 | 2013-3-19 14:53 | 只看该作者
mahui843 发表于 2013-3-19 14:21
你指定芯片型号了吗?指定芯片型号后,再代码前面加上 #define _芯片型号_试试,比如#define _16f877_,在菜 ...

我选的芯片是16f883,而且也按照你的做的了,可是恩然出错啊!!!

使用特权

评论回复
10
mahui843| | 2013-3-19 15:41 | 只看该作者
#include<pic.h>
void main(void)
{
int a=1;
}

Build F:\My Design\16f883\test for device 16F883
Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.81\bin\picc.exe

Make: The target "F:\My Design\16f883\main.p1" is up to date.
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.81\bin\picc.exe" -otest.cof -mtest.map --summary=default --output=default main.p1 --chip=16F883 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode)  V9.81
Copyright (C) 2010 Microchip Technology Inc.
Serial number: HCPICP-654321 (PRO)
Warning [1090] F:\My Design\16f883\main.c; 4. variable "_a" is not used

Memory Summary:
    Program space        used     7h (     7) of  1000h words   (  0.2%)
    Data space           used     2h (     2) of   100h bytes   (  0.8%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     2h words   (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

Loaded F:\My Design\16f883\test.cof.

********** Build successful! **********  
我编译能通过啊

使用特权

评论回复
评论
Rain_King 2013-3-24 22:44 回复TA
给你2分.......算做为你的热心回答... 
11
Light_David| | 2013-3-19 15:42 | 只看该作者
点击图标->右键->属性->兼容模式->使用管理员模式运行.

使用特权

评论回复
评论
Rain_King 2013-3-24 22:45 回复TA
虽然我这种方法也试过了...不过还是给你2分 
12
mahui843| | 2013-3-19 15:50 | 只看该作者
#define  _pic16f683
#include "pic.h"

这是我用的,picc的版本是9.60

使用特权

评论回复
13
mahui843| | 2013-3-19 15:52 | 只看该作者
在pic.h中有:
#if defined(_16F883)        || defined(_16F884)        ||\
    defined(_16F886)        || defined(_16F887)
        #include        <pic16f887.h>

使用特权

评论回复
14
mahui843| | 2013-3-19 15:58 | 只看该作者
不对,刚刚是用9.81版编译的

使用特权

评论回复
15
yklstudent| | 2013-3-19 16:02 | 只看该作者
吹牛了 你发的程序没调用EEPROM_ROUTINES.H
为什么会编译提示这个有关头文件的错误呢 所以还是让你帮你猜谜呢 真是无语

使用特权

评论回复
16
mahui843| | 2013-3-19 16:04 | 只看该作者
编译器切换不过来,没法测试PICC V9.6

使用特权

评论回复
17
yklstudent| | 2013-3-19 16:06 | 只看该作者
估计楼主明明调用eeprom_routines.h头文件内的函数了
然后再调用时,在参数间的","错误用了","了  

使用特权

评论回复
18
yklstudent| | 2013-3-19 16:15 | 只看该作者
// This header file should not be included directly
// Inclusion of this file is provided indirectly by including htc.h

/***********************************************************************/
/****** EEPROM memory read/write macros and function definitions *******/
/***********************************************************************/
/* NOTE WELL:

   The macro EEPROM_READ() is NOT safe to use immediately after any
   write to EEPROM, as it does NOT wait for WR to clear.  This is by
   design, to allow minimal code size if a sequence of reads is
   desired.  To guarantee uncorrupted writes, use the function
   eeprom_read() or insert
        while(WR)continue;
   before calling EEPROM_READ().
*/
#if        EEPROM_SIZE > 0

#ifdef        __FLASHTYPE
        // macro versions of EEPROM write and read
#define        EEPROM_WRITE(addr, value) \
do{ \
        while(WR)continue;EEADRL=(addr);EEDATA=(value); \
        EECON1&=0x3F;CARRY=0;if(GIE)CARRY=1;GIE=0; \
        WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
        if(CARRY)GIE=1; \
}while(0)
        #define        EEPROM_READ(addr) ((EEADRL=(addr)),(EECON1&=0x3F),(RD=1),EEDATA)
#else        // else doesn't write flash
#define        EEPROM_WRITE(addr, value) \
do{ \
        while(WR)continue;EEADRL=(addr);EEDATA=(value); \
        CARRY=0;if(GIE)CARRY=1;GIE=0; \
        WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
        if(CARRY)GIE=1; \
}while(0)
        #define        EEPROM_READ(addr) ((EEADRL=(addr)),(RD=1),EEDATA)
#endif

/* library function versions */
extern void eeprom_write(unsigned char addr, unsigned char value);
extern unsigned char eeprom_read(unsigned char addr);
#endif        // end EEPROM routines

这个是PICC9.80版本下的eeprom_routines.h头文件内的全部内容
不知道楼主提示错误的两个函数是怎么来的
难道楼主的PICC9.80版本是限量版本的 所以特殊????

使用特权

评论回复
评论
Rain_King 2013-3-24 22:45 回复TA
我也不太清楚.... 
19
mahui843| | 2013-3-19 16:26 | 只看该作者
picc V9.6 也能通过啊,实际上选的芯片是16f877a,结果如下:
源文件:
#include<pic.h>
void main(void)
{
int a=1;
}
编译结果:
Build F:\My Design\16f883\123 for device 16F877A
Using driver C:\Program Files (x86)\HI-TECH Software\PICC\lite\9.60\bin\picc.exe

Make: The target "F:\My Design\16f883\main.obj" is out of date.
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -C "F:\My Design\16f883\main.c" -q --chip=16F877A -P --runtime=default --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Warning [176] F:\My Design\16f883\main.c; 6.0 missing newline
Warning [337] F:\My Design\16f883\main.c; 5.8 line does not have a newline on the end
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -o123.cof -m123.map --summary=default --output=default main.obj --chip=16F877A -P --runtime=default --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH PICC-Lite COMPILER (Microchip PICmicro) V9.60
Copyright (C) 1984-2006 HI-TECH SOFTWARE

Memory Usage Map:

Program space:
    CODE                 used     Ah (    10) of   800h words   (  0.5%)
    CONST                used     0h (     0) of   800h words   (  0.0%)
    ENTRY                used     0h (     0) of   800h words   (  0.0%)
    STRING               used     0h (     0) of   800h words   (  0.0%)

Data space:
    BANK0                used     2h (     2) of    60h bytes   (  2.1%)
    BANK1                used     0h (     0) of    50h bytes   (  0.0%)
    COMBANK              used     0h (     0) of    10h bytes   (  0.0%)

EEPROM space:
    EEDATA               used     0h (     0) of   100h bytes   (  0.0%)

ID Location space:
    IDLOC                used     0h (     0) of     4h bytes   (  0.0%)

Configuration bits:
    CONFIG               used     0h (     0) of     1h word    (  0.0%)

Summary:
    Program space        used     Ah (    10) of   800h words   (  0.5%)
    Data space           used     2h (     2) of    B0h bytes   (  1.1%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     1h word    (  0.0%)

Loaded F:\My Design\16f883\123.cof.

********** Build successful! **********

使用特权

评论回复
评论
Rain_King 2013-3-24 22:46 回复TA
好了...给完了.... 
20
yklstudent| | 2013-3-24 23:02 | 只看该作者
用X8编译器吧 感觉不错的 就是没有和谐版

使用特权

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

本版积分规则

个人签名:努力学习,积极回复,只为申请版主.......

29

主题

784

帖子

4

粉丝