教你利用Visual Studio的智能提示,快速编写C51代码
虽然有智能提示的软件有很多,比如Source Insight、Ultra Edit,但我都不太喜欢。周立功的TKStudio也用过,感觉还行,但还是不太满意。由于学C#,我的电脑上安装了Visual Studio 2008,那代码提示功能太强大了。于是,研究了一段时间,终于实现了利用VS+VAX的强大提示功能快速编写C51程序。
如果你电脑上没有VS,并且除了这里你其它地方不用,那就建议你不要安装,软件太大了。
软件要求:1.Visual Studio 2008(4.3G) 或 2010(2.5G);
2.Visual Assist X 10.6(7.5M);
3.Keil uVision(28.5M);
友情提示,以上软件均需要河蟹。
第一步,软件安装:
安装Visual Studio 2008,建议全部安装。
安装Visual Assist X。
安装Keil uVision。
第二步,添加环境变量:
以Windows 7为例,在桌面 计算机 上右击,选择 属性,打开属性对话框,在左列快速列表中点击 高级系统设置(要求有管理员权限),打开 系统属性 对话框,在 高级 选项卡中点击 环境变量 按钮, 打开 环境变量 对话框。在PATH变量后添加KEIL的BIN文件夹路径,例如 C:\KEIL\C51\BIN ,如果没有PATH变量,请自行添加,如果已有,应注意项与项之间以英文分号“;”隔开。确定后添加第二个变量C51INC,值为KEIL的INC文件夹路径,例如 C:\KEIL\C51\INC 。确定无误后添加第三个变量 C51LIB,值为KEIL的LIB文件夹路径,例如 C:\KEIL\C51\LIB 。确认无误后 点击确定,关闭对话框,完成设置。
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559840.png
(原文件名:3.png)
第三步,给VS添加工具
打开VS2008→工具→外部工具,在 外部工具 对话框中点 添加 ,以添加一个外部工具,在标题中填写工具名称(可任意,这里设为C51)。在 命令 输入框中填入第一个工具C51.EXE(keil安装路径下KEIL\C51\BIN)的绝对路径,也可点后面的 … 按钮,以图形化的方式添加。参数栏填入 $(ItemPath) ,即当前文件的路径(绝对路径,包括文件名称和后缀),也可以点后面的三角按键,选 项路径。初始目录为空。钩选 使用输出窗口 , 提示输入参数 和 将输出按Unicode处理 不钩选。点 应用 按键完成第一个工具 编译器 的添加。 再次添加一个外部工具 链接器 LX51(KEIL\C51\BIN下),参数为 $(ItemDir)$(ItemFileName).obj TO $(ItemDir)$(ItemFileName).abs ,其它与第一项设置相似。再添加第三个HEX文件生成工具Ohx51.exe,参数 $(ItemDir)$(ItemFileName).abs ,其它同上。完成后确定完成工具的添加。
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559841.png
(原文件名:1.png)
为了方便,把这三个工具添加到工具栏上。打开 工具→自定义,打开 自定义 对话框,切换到 工具栏选项卡,点击 新建 ,添加一个工具栏,名称可任意(这里设为MUCTools)。切换到 命令 选项卡,在 类别 列表里选择 工具 ,在 命令 列表里选择刚刚添加的外部命令。注意,这儿只有 外部工具1、外部工具2等,这是按 外部命令 里的排序给出的。例如 如果第一次添加的C51.EXE在 外部工具 对话框 的 菜单内容 列表排第3个,那么这儿对应的就是 外部工具3。找到后 拖动 外部工具3 到刚刚添加的工具栏 MUCTools 里,然后在其上右击,可编辑其样式。依次添加其余两个工具。
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559842.png
(原文件名:2.png)
OK,此时打开一个单片机的C程序,点第一工具C51.EXE编译,没有错误后点第二工具BL51.EXE链接,没有错误的话就可以点第三个工具OHX51.EXE生成HEX文件。没有错误产生就会在C程序同目录下生成同名的HEX文件。
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559843.png
(原文件名:4.png)
如果觉得每次都要点3次才编译太麻烦,可编写BAT批处理文件,KEILPATH为实际C51的BIN目录:
SET KEILPATH=C:\Users\elecfun\documents\keil\C51\BIN
%KEILPATH%\C51.EXE %1.c
%KEILPATH%\lx51.EXE %1.obj to %1.abs
%KEILPATH%\OHx51.EXE %1.abs
@echo off
DEL %1.obj
DEL %1.abs
DEL %1.map
DEL %1.lst
用上面添加外部工具的方法添加一个工具,指向此批处理文件
例如我的,命令:c:\users\elecfun\Documents\keil\MCU51.bat,参数:$(ItemDir)$(ItemFileName)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559847.png
(原文件名:11.png)
为了使用Visual Assist 强大的代码提示功能,设置VAssistX,Suggestions改为MAX:
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559844.png
(原文件名:9.png)
完成后,就慢慢享受编程的乐趣吧!
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559845.png
(原文件名:5.png)
VS2010下的:
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559846.png
(原文件名:10.png) 相关软件下载地址:
VS2008简体中文正式版: http://www.iplaysoft.com/vs2008.html
Visual Studio 2010 中文旗舰版:http://www.iplaysoft.com/vs2010.html
Visual Assist X:http://www.wholetomato.com/downloads/default.asp
Visual Assist X 10.6.1823.0 Cracked:http://cid-92e2784c60a4ce4a.skydrive.live.com/self.aspx/.Public/%e5%85%b1%e4%ba%ab%e6%96%87%e4%bb%b6/Visual%20Assist%20X%2010.6.1823.0%20Cracked.By.TheCjw.rar MARK IDE
MARK 集成开发环境 谁有更好的办法。楼主的办法太复杂了。不过看到希望了 这个办法好,多谢楼主,收藏 MARK
记住Visual Studio 2008/2010的下载地址 mark 高射炮打蚊子。使用UltraEdit建立一个编译环境就蛮好了。 呵呵,这个用好5+年了:)
其实很简单,就是利用Visual Assist X的代码提示特性.个人建立用VS+VAX写代码就行了,编译的话,还是直接在Keil中进行,毕竟建工程什么的还是在那里面方便.
我一般写任何MCU的代码都习惯在VS+VAX中进行,就是在代码下建个VC工程,将所有的代码加入VC工程中就OK了.
如果赚VS 2008大,完全可以下个几十M的VC 6绿色精简版来配合VAX.另外网上也有VS 2008的IDE的精简版,非常非常小的,好像可以挂VAX插件的.
另外写代码看代码Source Insight(非常非常优秀,可惜中文支持不太好,而且好多年没大的更新了),SlickEdit都是不错的选择
如果是用VS的话,还有一个插件"CodeRush™ with Refactor!™ Pro "可以试试(不过需要主机比较强,不然有点慢),它的重构功能比较好用,参见http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/ 用eclipse的飘过 谢谢。 mark, 以前用VC6 + VAX. mark 有必要搞这么麻烦吗。不就写个代码?还装个4.3G的 回复【7楼】tear086 .COM 缺氧
-----------------------------------------------------------------------
当然 Ultra Edit也是可以的,直接调用批理文件也是可以的
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559931Y30Z.png
(原文件名:无标题.png)
回复【8楼】hiberhe
-----------------------------------------------------------------------
有机会试下
回复【13楼】zhuyi25762
-----------------------------------------------------------------------
又没让你一定用,都说了,如果电脑上安装了VS,那么就可以充分利用。
你牛 你用记事本写 还不用安装 mark一下 mark VAX破解下不了了. 马克 哎,slickedit用户跳过。
make, make prog, make debug等等。。 mark,教你利用Visual Studio的智能提示,快速编写C51代码 这个一定要标记 mark mark!我也用C# 有空弄一下! 这个要顶!! cool 留用 好办法。。。。。。。。 8qaj 错 MARK~~~晚上马上下载试试~~~多谢 好复杂吖~ 不敢试~ mark 不错~~ mark 和楼主一样.想找一个好用的代码智能提示/自动完成的编辑器, 试用过Source Insight,SlickEdit,周立功的TKStudio, VC6++(插件Visual Assist X)即楼主所用的Visual Studio低级版, 以下仅个人感受:
--------------------------
1. 写代码最舒服的莫过于VC6++(插件Visual Assist X),代码智能提示/自动完成功能太强大了,有种一旦拥有别无它求的感觉,但也有一个不能忍受的一点:没有像Source Insight的那个Contex窗口.看代码时很不方便呀.
2. SlickEdit有像Source Insight的那个Contex窗口.有代码智能提示/自动完成功能,但缺点是对大小写敏感,也就是说以前定义过一个函数void FunctionDisp(void), 键入小写f时不会有FunctionDisp的提示.对我来说不好用.
3.周立功的TKStudio有像Source Insight的那个Contex窗口.但代码智能提示/自动完成功能很弱.没有函数自动完成功能.
4.Source Insight的代码智能提示/自动完成没有VC6++(插件Visual Assist X)那么强大,看代码时Contex窗口太好太舒服了.有效提高程序员效率.Source Insight的Project窗口文件结构与VC6++,SlickEdit,TKStudio不一样,不太习惯.但有搜索功能勉强能接受.
---------------------------
综合以上,俺选用Source Insight. 建议楼上试试eclipse cdt的最新版,也有跟Source Insight的那个Contex窗口的那种自动显示变量和函数的功能,智能提示/自动完成功能也非常强大,对大小写也不敏感(但我不喜欢,经常匹配过多),而且最爽的一点是自动根据宏定义折叠被无效代码,看那些用宏定义控制代码的源码非常方便。 mark 为什么我的启动vs2005然后运行显示不能打开AT89C52 用这个写51,光看体积就吓死人了
我用VIM+make,舒服得很 make 刚刚看看到,友情帮顶,哈哈。 make 谢谢【35楼】 ilcvm 建议, 准备试试. jihao 标记一下。 mark 有机会可以试一下 以后方便了哦! 谢谢楼主 mark mark 很好很强大....
不过只装了C# mark mark mark 这个标记下,一定要试试。 没有人用Code::Block么?? 这个支持了 用Source Insight的飘过~ 学习一下 这个要支持. mark 我用的是VC6.0但是这里的路径好像和VS2008不一样吧,你教程里的 参数:$(ItemDir)$(ItemFileName) 在VC6.0里面没有的,所以我的没有成功,编译不过去 标记一下 我用C-Free也不错 学习了,谢谢LZ. 好方法,顶起来!!! 能编译工程文件? 代码编辑的话notepad++也很好呀 回复【62楼】maidilong
-----------------------------------------------------------------------
VC6.0里不能直接用这个参数 你使用按钮添加吧
回复【67楼】slshu
-----------------------------------------------------------------------
不能编译工程文件
回复【68楼】bbssr
-----------------------------------------------------------------------
呵呵 听过 没用过 我现在一直用VS2010来写,很舒服的说…… 工程管理不知道如何弄 vs2010要注_册不? mark mark mark,备用 好方法啊,以后所有的开发都用Visual Stdio统一进行 是不是Visual C# 2008 Express edition不行啊,装完没看到visual assisit
Win7 32位系统 真希望MDK有这样的功能,强烈要求!做STM32开发时会用到很多结构体,由于不熟,对结构体成员赋值时总是要看结构体定义,甚是不爽,如果有这功能会加快写代码的进度。最后还是强烈要求MDK开发这样的功能! mark 折腾了半天才发现,EXpress版本不支持插件服务 mark 很方便 mark 回复【71楼】wangma
vs2010要注_册不?
-----------------------------------------------------------------------
要注_册的 我下的是已经破_解过的 回复【79楼】zhfeng
-----------------------------------------------------------------------
EXpress版本没有试过 可能确实不支持插件 这个办法好,多谢楼主,收藏 关注中…… 连接通不过啊!
---
LX51 LINKER/LOCATER V4.41 - SN: D1LMC-CESB7C
COPYRIGHT KEIL ELEKTRONIK GmbH 1995 - 2009
F:\Test\vs2010C51\01\m.obj TO F:\Test\vs2010C51\01\m.abs ******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0020H BYTE ( 1%) *
******************************************************************************
Program Size: data=9.0 xdata=0 const=0 code=47
*** ERROR L257: EXTENDED LINKER REQUIRES UPGRADE TO PK51 可以用code::blocks直接关联.c,.h文件,支持智能提示,代码补全 下载试试,减轻工作是件好事儿 MARK mark 就用KEIL,有感情了! AVR用还一直用AVRStudio,偶尔尝试一下其它,但做工程还是用它 我的也是连接不了,,,请教楼主是什么原因。
d:\My Documents\Visual Studio 2008\Projects\C51test\MainFile.obj TO d:\My Documents\Visual Studio 2008\Projects\C51test\MainFile.abs
*** ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND 回复【94楼】cy757
-----------------------------------------------------------------------
你在磁盘根目录下建个项目试试 谢谢chengluoran。
确实是在磁盘根目录下建一个就可以了,代码提示功能还挺好用的。就是每次编译都要先保存;出现语法错误时不能快速定位,这两点不好。 好像只要文件路径包含空格就无法连接,期待高手解决 回复【87楼】yulri
连接通不过啊!
---
lx51 linker/locater v4.41 - sn: d1lmc-cesb7c
copyright keil elektronik gmbh 1995 - 2009
f:\test\vs2010c51\01\m.obj to f:\test\vs2010c51\01\m.abs ******************************************************************************
* restricted version with 0800h byte code size limit; used: 0020h byte ( 1%) *
****************************************************************************** ......
-----------------------------------------------------------------------
这个问题还没有碰到过,KEIL可以正常编译吗? 你把KEIL先和*谐下试试
回复【94楼】【96楼】cy757
-----------------------------------------------------------------------
路径中不能包含空格,你更改路径
每次更改后保存也是个好习惯嘛
快速定位确实是个问题,但看行号也基本够了
回复【97楼】chengluoran
好像只要文件路径包含空格就无法连接,期待高手解决
-----------------------------------------------------------------------
确实是不能包含空格,否则如94楼那样,提示错误
*** ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND Mark 回复【97楼】chengluoran
-----------------------------------------------------------------------
应该是没有加上双引号的原因。