打印

超过2万行的51程序用什么软件编译好?

[复制链接]
3365|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
哈佛大学|  楼主 | 2007-4-7 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
every_day| | 2007-4-7 15:13 | 只看该作者

不要编了

白忙

使用特权

评论回复
板凳
nust1996| | 2007-4-7 15:14 | 只看该作者

没用过WAVE

不过我用KEIL没问题,DATA 2K,CODE 90K

使用特权

评论回复
地板
ayb_ice| | 2007-4-7 15:19 | 只看该作者

不知WAVE有啥好,放着KEIL UV3不用

不知WAVE有啥好,放着KEIL UV3不用....
BANKING技术可以做到几M的代码...

使用特权

评论回复
5
哈佛大学|  楼主 | 2007-4-7 15:19 | 只看该作者

3楼,请问编译大程序要作哪些设置?

用keil好象也不行

使用特权

评论回复
6
ayb_ice| | 2007-4-7 15:25 | 只看该作者

只要不超过64K都是一样的...

只要不超过64K都是一样的...

使用特权

评论回复
7
nust1996| | 2007-4-7 15:25 | 只看该作者

你程序没有超过64K

不需要BANK设置,只要设置一下XDATA的范围就可以了

使用特权

评论回复
8
ayb_ice| | 2007-4-7 15:28 | 只看该作者

你的源文件可能被设为只读了...

你的源文件可能被设为只读了...

使用特权

评论回复
9
哈佛大学|  楼主 | 2007-4-7 15:34 | 只看该作者

8楼

没有啊,删掉部分程序就能正常编译 

使用特权

评论回复
10
ayb_ice| | 2007-4-7 15:40 | 只看该作者

那就不懂了...

使用特权

评论回复
11
nust1996| | 2007-4-7 15:48 | 只看该作者

你要把编译的错误提示都写出来

你要把编译的错误提示都写出来,大家才好帮你找原因啊

使用特权

评论回复
12
哈佛大学|  楼主 | 2007-4-7 15:54 | 只看该作者

就是一句: I/O ERROR ON INPUT FILE

使用特权

评论回复
13
ayb_ice| | 2007-4-7 15:58 | 只看该作者

这是KEIL里的解释

Fatal Error 210
I/O Error on Input File:
Summary   *** Fatal Error 210
    I/O Error on Input File:
    system error message
    File: filename

 
Description   A read or write error occurred while accessing the input file filename.  

Copyright (c) Keil Software, Inc. and Keil Elektronik GmbH. All rights reserved.

使用特权

评论回复
14
nust1996| | 2007-4-7 16:08 | 只看该作者

是不是哪个文件包含路径的问题

是不是哪个文件包含路径的问题

使用特权

评论回复
15
ayb_ice| | 2007-4-7 16:11 | 只看该作者

随便说说

你这是致命问题,你删除的代码肯定有include语句,仔细检查路径,文件名...

使用特权

评论回复
16
哈佛大学|  楼主 | 2007-4-7 16:15 | 只看该作者

没有啊

使用特权

评论回复
17
平常人| | 2007-4-7 16:53 | 只看该作者

见过这种问题,原因是单个文件太大,分成多个较小的文件

使用特权

评论回复
18
哈佛大学|  楼主 | 2007-4-8 03:48 | 只看该作者

re

分小段后,wave仍然出错,而keil编译不出错,但build target时出错,说程序里使用了太多的递归,无法生成hex。而wave对这些递归却不报错,对程序太大报错。
晕......

使用特权

评论回复
19
xwj| | 2007-4-8 09:26 | 只看该作者

wave环境下文件名中不能有“-”

虽然调用的是Keil的编译器,而且Keil没有这个问题
递归错肯定是你的程序嵌套了,比如A调用了B,B调用C,C又间接调用了A,那就没完没了了,少的递归是可以编译通过的,太多了那就肯定是你的程序结构有问题了!


用Keil一定要打0xfd补丁,不然很容易编译没错误但执行错误

使用特权

评论回复
20
liuq| | 2007-4-8 10:13 | 只看该作者

我来说几句,我也做了51宏汇编器和连接器

对于一个具有几万行的汇编程序,按理说应该是可以正确汇编的。根据8051代码空间的大小尺寸,如果全部使用的是单字节指令,理论上汇编器可以支持65536行有效指令的源文件。不信你可以试一试:
INC   A
INC   A
INC   A
NOP
......
MOV R0,A

但是,对于一个实际应用程序来说上述例子程序是不可能的。程序中多少会出现一些标号和变量,而汇编器支持标号和变量的长度为最大32字节,假如每一行前都有一个标号,那么在极端情况下这些标号和变量缓冲区的大小应不得小于64K×32字节,这么大的空间在早期DOS时代是绝对不能承受的,即便是在Windows环境下也是不合理的。
那么汇编器的作者权衡综合性能做出了一些限制:限制标号和变量缓冲区的大小。这就是不能汇编的真实原因!
解决方法:
使用多模块方式编程(不是使用include方式!),使用 segment/rseg,public/extrn将程序打断,使得程序结构更加清晰合理。
广告:欢迎使用我们的MedWinV3和内嵌自主版权的汇编器/连接器,相信它会是最好的IDE。
相关链接:http://www.manley.com.cn

使用特权

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

本版积分规则

16

主题

54

帖子

0

粉丝