作者:小爬虫 | 来源:互联网 | 2023-06-29 12:59
在命令行下编译keil,生成HEX文件的问题:
在VB6中,我想将.C文件编译成.HEX文件。
程序如下:
Dim Paths$, aa
Paths = Text1.Text & " " & Text2.Text
aa = Shell(Paths, 0) ' 生成test.obj
Paths = PaEx & "lx51.exe" & " " & Path & Wjms & ".obj"
aa = Shell(Paths, 0)
Paths = PaEx & "ohx51.exe" & " " & PaCs & Wjms
aa = Shell(Paths, 0) ' 生成text.hex,就可以烧写到51单片机中运行了。
说明:text1和text2中分别是C51.EXE和.c文件路径,包含文件名。PaEx和PaCs分别是KEIL\C51\BIN和.c文件路径,不含文件名。Wjms是C文件的名称,不含扩展名。
问题:第一步可以生成OBJ文件,但是以后两步就没有反应了。
请问各位高手:是什么问题?是必须要同一路径吗?各位高手请赐教!!!
我在这里首先谢谢啦!谢谢啦!!!!!!
20 个解决方案
以下是我一实际工程中UV3生成的BAT中的全部内容:
[code=BatchFile]SET C51INC=d:\program files\Keil\C51\INC\Cygnal\;d:\program files\Keil\C51\INC\
SET C51LIB=d:\program files\Keil\C51\LIB
SET CPU_TYPE=C8051F120
SET CPU_VENDOR=Silicon Laboratories, Inc.
SET UV2_TARGET=Target 1
SET CPU_XTAL=0x05F5E100
d:\program files\Keil\C51\BIN\A51.EXE @STARTUP._ia
d:\program files\Keil\C51\BIN\C51.EXE @Cfg.__i
d:\program files\Keil\C51\BIN\C51.EXE @Global.__i
d:\program files\Keil\C51\BIN\C51.EXE @Link.__i
d:\program files\Keil\C51\BIN\C51.EXE @Motion.__i
d:\program files\Keil\C51\BIN\C51.EXE @Main.__i
d:\program files\Keil\C51\BIN\BL51.EXE @DRANGC~1.LNP
"d:\program files\Keil\C51\BIN\OH51.EXE" "Drang Ctrl"
[/code]
从中可见,需要设置一些环境变量.
至于8.3以及空格问题貌似都是不影响的.
建议你把你的工程使用UV3编译,选项里注意勾上"Create Batch File",看看UV3在你机器上是怎么写这个BAT的.
楼上的老师:谢谢你的赐教!
我已将批处理文件改为如下:
set PATH=%PATH%;C:\keil\C51\BIN;C:\keil\C51\INC;C:\keil\C51\LIB
set C51_LIB=C:\keil\C51\LIB\
set D:\A\
set DIR=D:\A
echo 转向工作目录
d:
cd %DIR%
echo 编译文件...
c51 a.c
echo 链接目标文件...
BL51 C:\keil\C51\LIB\C51s.lib,D:\A\a.obj TO D:\A\A RAMSIZE(256) CODE(?CO?c(FC00H), ?CO?d(FFD0H))
echo 生成HEX文件...
OH51 D:\A\A.M51
echo 编译结束
此程序能完成整个过程。可产生a.lst、a.obj、a.m51、a.hex文件,但a.hex文件是空的,0字节。是否目标链接有问题?请指教!!!
你在UV3中编译成功没有?
先在这个IDE里编译OK,然后再对比一下它生成的BAT.
你在UV3中编译成功了。但不存在BAT文件呀!!!是否在UV3中设置才可生成BAT文件?
我在UV3中编译成功了。但不存在BAT文件呀!!!是否在UV3中设置才可生成BAT文件?
在“输出”选项卡中,将“产生批处理”打钩,也生成不了BAT文件呀!!!
在“输出”选项卡中,将“产生批处理”打钩了,也不能生成BAT文件呀!!!
先谢啦!现在有了。使用两个向下箭头的按钮才能生成。
BAT文件的全部如下:
SET C51INC=C:\Keil\C51\INC\
SET C51LIB=C:\Keil\C51\LIB
SET CPU_TYPE=SST89C54
SET CPU_VENDOR=SST
SET UV2_TARGET=Target 1
SET CPU_XTAL=0x01F78A40
C:\Keil\C51\BIN\C51.EXE @3208_V~1.__I
C:\Keil\C51\BIN\BL51.EXE @3208_V4.lnp
"C:\Keil\C51\BIN\OH51.EXE" "3208_V4"
现在双击该BAT文件,可以生成HEX文件了。万分感谢!!!!!!
楼主能咨询个问题么 我的QQ 525653865 麻烦加一下