这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » keilc keilc的启动文件问题

共2条 1/1 1 跳转至

keilc keilc的启动文件问题

院士
2006-09-17 18:14:16     打赏
keilc keilc的启动文件问题



关键词: keilc     启动     文件     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 芯片:AT89C51
仿真环境:WAVE6000
编译器路径:KEILC7.06完全版
程序编译时,我不想产生那一段清RAM的程序,请问如何设置?
一:不产生清零作用
二:清零RAM的这段代码编译后根本不出现,也就是说如果MAIN{}为空的时候,编译结果的大小能不能和汇编一样大。

1: IDATALEN    EQU    00H修改当前目录下的STARTUP.A51文件中的IDATALEN,使其为0

IDATALEN        EQU     00H     ; the length of IDATA memory in bytes.
;
XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory
XDATALEN        EQU     0H      ; the length of XDATA memory in bytes.
;
PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.


STARTUP1:

IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF
2: 还是不行拉打开startup.a51文件,相关内容如下:
IDATALEN        EQU     80H
XDATASTART      EQU     0H      
XDATALEN        EQU     0H      
PDATASTART      EQU     0H      
PDATALEN        EQU     0H

STARTUP1:
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF
修改IDATALEN    EQU     80H ---》IDATALEN     EQU     00H后从CPU窗口中还是看到这样的反汇编结果:

                      MOV  R0,#7FH
                      CLR  A
                      MOV  @R0,A
                      DJNZ R0,0006H
我尝试着修改为IDATALEN    EQU     01H,上面那几句依然不变化。

我删除掉
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF
编译结果的大小也未发生任何变化。 3: IDATALEN没有被改写可以重建工程文件,会得到STARTUP.A51...

再修改IDATALEN 4: 我只会点这些,如下设置WAVE6000的编译器路径到KEIC的安装路径。
新建了一个空的主函数然后新建一个项目文件,主函数如下:
          #include <REG51.H>
          //#include <stdio.h>
          #define  uchar      unsigned char
          #define  uint       unsigned int
void   main (void) {
                    }
以前听说过修改启动文件可以达到我要的效果,至于为什么IDATALEN没有被改写我是不得而知,如何重新生成工程文件那更是一窍不通了。

一切都在摸索中,还望各位老手再帮忙讲讲喽……
5: 那就直接修改KEIL的安装路径下的STARTUP.A51生气了就只保留KEIL的安装路径下的STARTUP.A51,其他的全部删除...

肯定会好的.... 6: 到底哪儿出问题了?问题叙述如下:
    我把KEIL安装路径下LIB文件夹中所有的文件删除,只保留STARTUP.A51,
    编译时出现报错,内容如下:
    FATAL ERROR L210: I/O ERROR ON INPUT FILE:
    打开项目文件夹下面的AA.M51有如下提示
   (项目文件名:AA.PRJ,源程序文件名:AA.C)
    EXCEPTION 0021H: PATH OR FILE NOT FOUND
    FILE: C:\KEIL7.06\C51\LIB\C51S.LIB
    把C51S.LIB文件还原到LIB文件夹中,可以正常编译(无报错信息),但反汇编结果如下:LJMP  0003H
         MOV   R0, #7FH;(这个值我在startup.a51中已经改为别的值,但不管
                         如何改,编译结果都没有任何变化)
         CLR   A
         MOV   @R0, A
         DJNZ  R0, 0006H
         MOV   SP, #07H
         LJMP  000FH
         RET
总之一句话,我怎么修改startup.a51文件,对程序编译结果没有任何的影响。

特别说明:用的WAVE的用户软件,把KEIL目录下的C51.EXE(应当是KEIL的C编译器)路径填入WAVE的编译器路径中。 7: 刚开始有点热情摸KEILC,怎么就那么难……打击得我快想放弃,继续*.asm了…… 8: 等回答……需要帮忙……

版主帮帮忙如何…… 9: 再顶 10: ~~呵呵~~~ 11: …… 12: 要把修改后的STARTUP.A51加入工程一起编译 13: 在WAVE中是把startup.a51加入包含文件吗?我加进去了,也不行的。

我把keil目录下的所有扩展名为A51的文件全删除掉,编译后还是那样啊。


到底怎么了……到底怎么了……

我用的是WINDOWS2000+WAVE6000+KELI7.06版本

WAVE仿真器设置:编译器路径:c:\keil7.06\c51(编译器C51.EXE的安装路径)
               软件版本选的是KEIL(V5或更高版本)
               仿真头选择8751 14: ^^^^^^^^ 15: 我等到花儿也谢了…… 16: 这个和wave有关系因为好久不用wave了
现在具体怎么解决也说不清楚
不过你可以看看wave下有没有类似的文件
如果还是不行的话
建议你不用wave,就用keil,想当年我用wave也是头痛的要死.... 17: 主要是习惯了WAVE的那个用户环境,……还是没能搞定…… 18: 我使用的环境和你一样!用QQ,或许我可以帮助你! QQ:234936220 19: WAVE6000与KEIL的问题请教1。在KEILC7.06环境下欲使用WAVE6000的仿真器(仿真头是PODH8X5X),按照使用说明的指导,总是提示“仿真头丢失”(串口测试正常,波特率为115200)。
2。后改为在WAVE6000环境下使用仿真器(利用其自带的DEMO程序)则正常,但新的问题又出现:我写的测试程序编译、连接均正确。但单步执行时总是跑飞(软件仿真时)。在相同的路径下,用KEILC则正常。请高手指导。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]