在命令行下编译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文件,但是以后两步就没有反应了。
请问各位高手:是什么问题?是必须要同一路径吗?各位高手请赐教!!!
我在这里首先谢谢啦!谢谢啦!!!!!!
在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文件,但是以后两步就没有反应了。
请问各位高手:是什么问题?是必须要同一路径吗?各位高手请赐教!!!
我在这里首先谢谢啦!谢谢啦!!!!!!
解决方案 »
- 关于逻辑的问题,我觉得这已经是真了啊
- 专家救急!!!vb调用vc函数中的数组参数如何传递!!!
- 请教。我想用WebBrowser1控件来显示网页的源代码,但好像总是显示不全。请求帮助。
- 最近温习PE结构的时候无聊写了个"木马生成器"
- 如何在PictureBox控件中用vb代码插入文本"我的图像"和图形符号■
- 问题求救!急!急!急!:怎样使用VB编写的软件支持越南语操作系统呢?在线等!
- 问问,我看到很多财务软件里面可以直接在表格里面输入数据。。。。。
- 请教2个比较头疼的问题,希望大家能帮帮我
- 请问软件打包发布的问题
- 如何用VB实现整个屏幕的淡入淡出?(16k色或全彩情况)
- 有没有办法通过序号来调用函数
- 怎么通过VB编程测量一个长方形零件图的大小啊
ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) As Long另外,如果路径带空格,建议使用引号将这个路径引起来,如:shell "notepad.exe ""c:\program files\123.txt"""
两个连续引号用在字符串里代表输入一个字符的引号.
我程序的路径设置
加入真实路径的实际程序如下:
Dim Paths$, aa
Paths = "C:\Keil\C51\BIN\C51.exe" & " " & "D:\A\A.c"
aa = Shell(Paths, 0) ' 生成test.obj
Paths = "C:\Keil\C51\BIN\" & "lx51.exe" & " " & "D:\A\A.obj"
aa = Shell(Paths, 0)
Paths = "C:\Keil\C51\BIN\" & "ohx51.exe" & " " & "D:\A\A"
aa = Shell(Paths, 0) ' 生成text.hex,就可以烧写到51单片机中运行了。
这样也只是能完成第一步的工作。
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字节。是否目标链接有问题?请指教!!!
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"
表示感谢!
If 本楼给分 Then
楼主木有小jj
End If