keil出现:***warning L5:code space memoyr overlap from 000 to 1123

意思是说代码段重叠,可是我找不到哪儿重叠了,有网友说生成了STARUP.A51,删除即可,但是我的程序没有生成STARUP.A51啊,而是code超出了flash的4096(at89s51,4k),查阅了keil的帮助文档,说是有两个中断引起,我的程序根本没中断 。程序如下:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV A,#3FH
CLR P3.0
MOV P0,A
LCALL DELAY
SETB P3.0

MOV A,#06H
CLR P3.1
MOV P0,A
LCALL DELAY
SETB P3.1

MOV A,#5BH
CLR P3.2
MOV P0,A
LCALL DELAY
SETB P3.2

MOV A,#4FH
CLR P3.3
MOV P0,A
LCALL DELAY
SETB P3.3
LJMP MAIN

DELAY:MOV R6,#10
D1:MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
END

是不是keil有设置错误?查到有人说加上:
XXX SEGMENT CODE
RSEG XXX
是什么意思?在哪儿加?这个不是8086里面汇编程序定义代码段的吗,怎么又扯到单片机的汇编上了?说的有点啰嗦,但是想把问题描述清楚,我自己弄这个问题已经弄很长时间了,也没解决,特来求教行家。

应当是项目配置有误。你贴出的源代码我新建了个工程试了一下,编译无问题。当然你的程序实际上是存在大毛病的……

网友提醒你项目中可能误添加了startup.a51,我也认为很有可能是这个问题,请再检查一遍。必要时不妨贴出截屏让大家看看。

另外请确认一下你汇编源文件的扩展名,我见过有些新手把汇编文件命名为.c然后出现各种稀奇古怪症状的。追问

"当然你的程序实际上是存在大毛病的" 是什么毛病呢?这是一个实现在四位数码管上显示0123的小程序 我用来做测试用的

追答

老眼昏花看错行了,无视我吧……

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-04
我用你的代码做了一下测试没有出现你说的那种错误。
ORG 0100H ;这就是跳过单片机的几个中断入口点。

keil出现:***warning L5:code space memoyr overlap from 000 to 1123...
应当是项目配置有误。你贴出的源代码我新建了个工程试了一下,编译无问题。当然你的程序实际上是存在大毛病的……网友提醒你项目中可能误添加了startup.a51,我也认为很有可能是这个问题,请再检查一遍。必要时不妨贴出截屏让大家看看。另外请确认一下你汇编源文件的扩展名,我见过有些新手把汇编文件...

STC单片机程序在KEIL编译时出现警告信息请教
CODE SPACE MEMORY OVERLAP 1.代码段地址重复了,生成的代码超过了编译器最大限制,或是你重复使用了相同的地址.UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START 2.你文件保存的扩展名是不是.ASM的,或是你仔细的检查一下,是不是标号写错了或是忘写了.主程序出问题的可能性比较大,看警告你就知道了 ,实...

keil编译出现问题,求指导怎么修改。详细指导一下新手
第一个警告可能是因为你选择的单片机RAM比较小,编译后的文件可能无法下载。可以将51单片机改成52单片机之类的试下。或者忽略。第二个警告是因为你有外部符号是没有用的,也就是说你的程序里面没有跳转到这个位置的代码。第三个警告和第二个警告是相关联的。如果还是不知道怎么弄,可已将第一行至第十...

KEIL总是编译不成可执行文件不成功求指导!
晕,你的程序是汇编语言,应该把源文件的扩展名改为xxx.asm,这样KEIL会调用汇编器,如果你的扩展名是.c ,KEIL就调用C编译器。另外,如果是纯汇编程序,那么项目中不需要startup.a51这个文件。

单片机汇编语言编译时有overlap警告是什么问题?
把你的程序和所用的编译软件发出来才好解决呀

请问在keil中怎么编译asm文件呢?
没有问题啊!能通过啊。不就是在地址为30H开头连续的16个地址赋值1到16么.编译执行都通过。不知道你具体问题是什么?是不是出现警告: WARNING L5: CODE SPACE MEMORY OVERLAP什么的?吧STARTUP.A51文件移除就可以了。

相似回答
大家正在搜