[求助] 这个简单的51单片机的问题,有点莫名其妙的,帮看看问题在哪里?

pcf2000   2018-8-27 14:00 楼主
这个简单的51单片机的问题,有点莫名其妙的,帮看看问题在哪里?
单片机是赛元的,前段时间还好好的,今天再试就这个问题了,实在看不出问题在哪?
删除:
#ifndef  _SYS_DEF_H_
#define  _SYS_DEF_H_


#endif
其他的H文件也会出现 同样问题,缺少;    。  我其他的项目文件同样的操作就没有这个问题,
  • 1234.png

回复评论 (19)

是不是中英文輸入的問題?
点赞  2018-8-27 15:36
是不是有中文字符啊
点赞  2018-8-27 15:50
难道有特殊字符么?不可见的?或者是文件编码格式的问题?

我之前遇到过一次  utf-8和utf-8 with BOM的问题

可以尝试将编码格式转换为ANSI的,或者utf-8 不带BOM的;
坐而言不如起而行
点赞  2018-8-27 16:09
引用: kiroking 发表于 2018-8-27 15:36
是不是中英文輸入的問題?

没有中文字符,这个项目文件以前都可以编译通过的,今天打开编译就出现缺少分号的错误提示
点赞  2018-8-27 16:39
引用: huo_hu 发表于 2018-8-27 15:50
是不是有中文字符啊

没有中文字符,这个项目文件以前都可以编译通过的,今天打开编译就出现缺少分号的错误提示
点赞  2018-8-27 16:39
引用: wsmysyn 发表于 2018-8-27 16:09
难道有特殊字符么?不可见的?或者是文件编码格式的问题?

我之前遇到过一次  utf-8和utf-8 with BOM的 ...

没有中文字符,这个项目文件以前都可以编译通过的,今天打开编译就出现缺少分号的错误提示
点赞  2018-8-27 16:40
引用: pcf2000 发表于 2018-8-27 16:40
没有中文字符,这个项目文件以前都可以编译通过的,今天打开编译就出现缺少分号的错误提示

有些特殊字符不一定是可见的。。

或者你重新建立一个源文件,不要拷贝粘贴,重写部分代码就行,比如上边那些sbit的定义;重新编译一下看看,是否还有,如还有问题,也有可能是别的文件里边在文件尾部的问题,
坐而言不如起而行
点赞  2018-8-27 17:05
建了一个空项目,里面没有什么代码,如下: #include vf void main(void) { } 就包含一个REG51.H,结果报错: D:\KEIL V9.0\C51\INC\ATMEL\REG51.H(3): error C129: missing ';' before 'void' 真的有点懵逼了!! 靠,复制到论坛来,结果看到后面有 vf 字母,什么鬼 本帖最后由 pcf2000 于 2018-8-27 17:12 编辑
点赞  2018-8-27 17:10
原来的项目,清除了一下编译,就没有报错了。。。
点赞  2018-8-27 17:15
引用: pcf2000 发表于 2018-8-27 17:15
原来的项目,清除了一下编译,就没有报错了。。。



好吧。。。这个应该很早就做一下的。。。
坐而言不如起而行
点赞  2018-8-27 17:28
引用: wsmysyn 发表于 2018-8-27 17:28
好吧。。。这个应该很早就做一下的。。。

最终的根源还是,在main文件里,靠右较隐蔽的地方(较远)有字母,所导致的   。。。
点赞  2018-8-27 17:33
引用: pcf2000 发表于 2018-8-27 17:33
最终的根源还是,在main文件里,靠右较隐蔽的地方(较远)有字母,所导致的   。。。
{:1_101: ...

嗯,我开始感觉像是其他文件的问题;;不是图上的这个文件里

最有可能就是预处理器在处理文件的时候,多了些东西;;

我之前遇过是编码格式的问题,,会在拼接源文件的时候出现工具不支持某些编码格式,识别错误加上去的

但是在源文件里看不见,因为不可见,只有改变编码格式才可以。



坐而言不如起而行
点赞  2018-8-27 18:03
.H文件的格式应该是这样的吧:
#ifndef DIGITRON_H
#define DIGITRON_H
#include

#define dash 10                 //'-'
#define dot 11                 //'.'
#define GPIO P0
#define LS138 P2
void Digitron_Disp(unsigned char i,unsigned char ch);

#endif
点赞  2018-8-28 11:06
很奇怪的是,在main.c文件里的顶上(靠近 #include的地方),有多余字母,编译错误结果却出现在不相干的H的文件里,查找错误确实有点懵的。
点赞  2018-8-28 12:01
引用: bqgup 发表于 2018-8-28 11:06
.H文件的格式应该是这样的吧:
#ifndef DIGITRON_H
#define DIGITRON_H
#include

#define dash 10                 ...

C51里,管脚重定义,可以用sbit定义的
点赞  2018-8-28 12:02
引用: pcf2000 发表于 2018-8-28 12:02
C51里,管脚重定义,可以用sbit定义的

是可以用sbit定义,我说是不是因为没有加这个#include ,这个头文件要添加进去的,你试一下,看看是不是这个问题
点赞  2018-8-28 13:27
引用: bqgup 发表于 2018-8-28 13:27
是可以用sbit定义,我说是不是因为没有加这个#include ,这个头文件要添加进去的,你试一下,看看是不是 ...

问题已经解决了:是在main.c里不小心添加了不相干的字符导致编译出错,删除多余的字符就编译通过了
点赞  2018-8-28 14:39
引用: pcf2000 发表于 2018-8-28 14:39
问题已经解决了:是在main.c里不小心添加了不相干的字符导致编译出错,删除多余的字符就编译通过了

很棒
点赞  2018-8-28 16:09
mdk最后一行多加一行空白38行后面要加一行空白,mdk有这个bug
点赞  2018-8-29 16:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复