PIC编译错误信息
◆如果总程序仍超过一页,则可能会有以上错误,检查程序是否超页:
66.
Error[000] : Can't find 0x26 words (0x26 withtotal) for psect text13 in segment CODE
Error[000] : Can't find 0xC words (0xC withtotal) for psect text in segment CODE
代码地址超出ROM范围,常伴随error [118]而出现。
42.
[118] Overwriting previous address contents
重复的代码地址。
43.
[120] Call or jump not allowed at this address
无效的调用或跳转地址。
44.
[121] Illegal label
10.
Illegal argument
非法参数。
11.
Illegal condition
IF语句中的条件符号出错。
12.
Illegal condition,EOF encountered before END or conditional end directive
IF、WHILE或MACRO语句中缺少相应的ENDIF、ENDW和ENDM。
13.
Illegal conditional compile
IF/ELSE/ENDIF结构书写有错。
14.
Illegal character…in label…
在标号字符中出现非法字符。合法的字符是“-”、“·”、“A”~“Z”、“a”~“z”、“0”~“9”。
15.
Illegal digit
非法数字。如在十进制数中出现十六进制符等。
超过256次循环未结束的While条件语句。
57.
[143] Illegal nesting
非法的嵌套。
58.
[145] Unmatched ENDM
未匹配的endm。
59.
[149] Directive only allowed when generating an object file
错误应用仅在目标文件生成时允许的指令。
变量buzz1未定义就使用,变量应先定义后使用。
70.
Error[000] D:\Work\standard\remo.c 80 : inappropriate 'else'
If,else语句未成对使用,缺少if条件,提示不对称的else。
71.
Error[000] : undefined symbols: Error[000] : _chipsel (D:\Work\standard\mini.obj)
未定义的标签,确认子程序chipsel()等是否可以被调用,检查是否在INCLUDE中,是否在调用前进行了函数原型声明。
72.
rror[000] D:\Work\standard\mini.c 19 : Cannot open include file "I2C.c1"
包含的文件名错误,检查包含的文件和原文件的命名是否相同。
unsigned char *ptr0; //定义指向bank0/1的指针
bank2 unsigned char buff[8]; //定义bank2中的一个缓冲区
程序语Байду номын сангаас:
ptr0 = buff; //错误!试图将bank2内的变量地址赋给指向bank0/1的指针
,如果你看到了“Fixup overflow”的错误指示,请重点检查程序中有关指针的操作。
Error [477] ; . fixup overflow in expression (location 0x1FEE (0x1FE6+8), size 2, value 0xFF5)
◆既然定义的指针有明确的bank适用区域,在对指针变量赋值时就必须实现类型匹配,
下面的指针赋值将产生一个致命错误:
缺少宏定义名称。
20.
Marco nested too deep
宏体嵌套太多。宏体中最多可嵌套8重。
21.
Missing arguments
缺少参数,如指令中缺少操作数等。
22.
Missing terminator
缺少配对符,如各种括号“)”、“〕”、“}”或“·”、空格等。
23.
Nested forward reference not allowed.
汇编的源程序文件不存在。
6.
Duplicate lable or redefininy symbol that cannot be redefined
标号或变量名重复定义。
7.
Error in parameter
参数错误。
8.
Expected…
源程序行有错。
9.
File not found
指定的文件找不到。
单片机芯片型号未定义。要么在源程序中未定义,要么在使用MPASM汇编时未定义。
27.
Processor type previously defined
单片机芯片型号重复定义。
28.
Symbol table full
符号表溢出。
29.
Temp file creation error
MPASM在汇编过程中会使用一些临时性文件。这个错一般是电脑磁盘满或读写出错引起。
16.
Illegal opcode
非法操作数。
17.
Include file not found
Include指令中的文件找不到。
18.
Include files nested too cleep
Include文件嵌套太多。Include文件嵌套最多的为5重。
19.
Macro name missing
Error[000] D:\Work\standard_\remo.c 8 : { expected
程序中大括号不完整,检查{}是否完整成对使用
68.
Error[000] D:\Work\standard\remo.c 8 : ; expected
程序代码后缺少“;”号。
69.
Error[000] D:\Work\standard\remo.c 10 : undefined identifier: buzz1
60.
[151] Operand contains unresolvable labels or is too complex
错误的操作数。
61.
[152] Executable code and data must be defined in an appropriate section
错误定位的代码和数据。
使用未定义的标号、变量、宏定义等。或者是MPASM不能确认标号的类型,一般由标号重复定义引起。
24.
Out of memory
程序空间溢出。
25.
Overwriting previous address contents
程序空间重复使用。一般由地址定义指令ORG定义不当引起。
26.
Processor type is undefined
未定义的器件选型。
53.
[132] Unknown processor
未知的器件选型。
54.
[135] Macro name missing
缺少名字的宏定义。
55.
[136] Duplicate macro name
重复名字的宏定义。
56.
[140] WHILE must terminate within 256 iterations
48.
[127] Too many arguments
太多的操作数。
49.
[128] Missing argument(s)
不足的操作数。
50.
[129] Expected
缺少操作数。
51.
[130] Processor type previously defined
错误的器件选型。
52.
[131] Processor type is undefined
While语句中没有结束的条件产生。
34.
Can't find 0x12C words for psect rbss_1 in segment BANK1
连接器告诉你总共有0x12C(300)个字节准备放到bank1中但bank1容量不够。显然,只
有把一部分原本定位在bank1中的变量改放到其它bank中才能解决此问题。
未定义的符号。 使用的符号事先未定义,检查符号的拼写和使用位置。地址可以不需要声明,但是常量和变量必须要在使用前声明。
还有INC文件中定义和程序中使用都要是大写
#include文件内部可以嵌套#include文件,当文件中包含有声明的时候,就要注意其位置是否在使用符号之前。通常都将#include文件置于程序的最前面。
38.
[114] Divide by zero
除数为0。
39.
[115] Duplicate label
重复定义标号。
40.
[116] Address label duplicated or different in second pass
重复的地址标号。
41.
[117] Address wrapped around 0
错误/警告/消息信息
MPASM汇编一个源程序后,可以产生一个.ERR文件,该文件用来存放汇编后可能产生的错误或警告信息。必须强调的是错误信息(Error)是指出源程序中出现“致命”(fatal)的错误,用户必须修改直至汇编后Errors= 0。而警告信息(Warnings)是指出源程序中可能有问题的地方,但并不一定是“致命”错误,只是提醒用户去注意这些被警告的地方。如果用户可以确认无误,便可以不理会产生的Warnings。