elecfun 发表于 2010-6-6 02:01:39

教你利用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)

elecfun 发表于 2010-6-6 02:03:40

相关软件下载地址:
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

eduhf_123 发表于 2010-6-6 02:23:03

MARK IDE
MARK 集成开发环境

tangwei039 发表于 2010-6-6 06:47:47

谁有更好的办法。楼主的办法太复杂了。不过看到希望了

cat_li 发表于 2010-6-6 07:49:04

这个办法好,多谢楼主,收藏

edawn 发表于 2010-6-6 08:03:20

MARK
记住Visual Studio 2008/2010的下载地址

lv998127 发表于 2010-6-6 08:05:50

mark

tear086 发表于 2010-6-6 08:42:18

高射炮打蚊子。使用UltraEdit建立一个编译环境就蛮好了。

hiberhe 发表于 2010-6-6 09:29:08

呵呵,这个用好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/

linyu0395 发表于 2010-6-6 09:36:12

用eclipse的飘过

mcu_lover 发表于 2010-6-6 09:45:03

谢谢。

nicksean 发表于 2010-6-6 10:18:31

mark, 以前用VC6 + VAX.

zlei 发表于 2010-6-6 10:24:39

mark

zhuyi25762 发表于 2010-6-6 11:04:09

有必要搞这么麻烦吗。不就写个代码?还装个4.3G的

elecfun 发表于 2010-6-6 13:47:00

回复【7楼】tear086 .COM 缺氧
-----------------------------------------------------------------------
当然 Ultra Edit也是可以的,直接调用批理文件也是可以的
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_559931Y30Z.png
(原文件名:无标题.png)

回复【8楼】hiberhe
-----------------------------------------------------------------------
有机会试下


回复【13楼】zhuyi25762
-----------------------------------------------------------------------
又没让你一定用,都说了,如果电脑上安装了VS,那么就可以充分利用。
你牛 你用记事本写 还不用安装

xl7y 发表于 2010-6-6 13:52:38

mark一下

ljt8015 发表于 2010-6-6 13:53:52

mark

nicksean 发表于 2010-6-7 00:25:33

VAX破解下不了了.

cqwshll 发表于 2010-6-7 00:31:58

马克

albert_w 发表于 2010-6-7 00:49:14

哎,slickedit用户跳过。
make, make prog, make debug等等。。

a___yue 发表于 2010-6-7 07:35:18

mark,教你利用Visual Studio的智能提示,快速编写C51代码

skynet 发表于 2010-6-7 08:20:28

这个一定要标记

cmj8992004 发表于 2010-6-7 08:49:05

mark

dachun 发表于 2010-6-7 10:16:48

mark!我也用C# 有空弄一下!

wangxiaoacc 发表于 2010-6-7 10:22:33

这个要顶!!

eworker 发表于 2010-6-7 10:27:48

cool

cqfeiyu 发表于 2010-6-7 11:52:46

留用

isme00174 发表于 2010-6-7 12:01:23

好办法。。。。。。。。

jrcsh 发表于 2010-6-7 12:01:41

8qaj 错

boy364100 发表于 2010-6-7 13:53:45

MARK~~~晚上马上下载试试~~~多谢

ayumi8 发表于 2010-6-7 14:12:46

好复杂吖~ 不敢试~

tonyone 发表于 2010-6-8 08:20:31

mark

hall 发表于 2010-6-8 09:04:51

不错~~

liangtao 发表于 2010-6-8 09:22:59

mark

zlutian 发表于 2010-6-8 09:48:30

和楼主一样.想找一个好用的代码智能提示/自动完成的编辑器, 试用过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.

ilcvm 发表于 2010-6-8 10:34:09

建议楼上试试eclipse cdt的最新版,也有跟Source Insight的那个Contex窗口的那种自动显示变量和函数的功能,智能提示/自动完成功能也非常强大,对大小写也不敏感(但我不喜欢,经常匹配过多),而且最爽的一点是自动根据宏定义折叠被无效代码,看那些用宏定义控制代码的源码非常方便。

xyq4513 发表于 2010-6-8 11:30:25

mark

18455668 发表于 2010-6-8 11:35:31

为什么我的启动vs2005然后运行显示不能打开AT89C52

maxchen 发表于 2010-6-8 11:52:05

用这个写51,光看体积就吓死人了
我用VIM+make,舒服得很

Spunky 发表于 2010-6-8 15:14:39

make

fool_boy 发表于 2010-6-8 15:36:46

刚刚看看到,友情帮顶,哈哈。

wangff2531 发表于 2010-6-8 15:47:01

make

zlutian 发表于 2010-6-8 16:32:38

谢谢【35楼】 ilcvm 建议, 准备试试.

huangdog 发表于 2010-6-8 17:04:56

jihao

oldmen 发表于 2010-6-8 17:59:52

标记一下。

orange2348 发表于 2010-6-8 18:25:02

mark

maidilong 发表于 2010-6-8 19:55:07

有机会可以试一下

luozhongchao 发表于 2010-6-8 20:51:27

以后方便了哦! 谢谢楼主

xoao 发表于 2010-6-8 20:54:35

mark

chxzh123 发表于 2010-6-8 22:13:39

mark

slshu 发表于 2010-6-9 08:00:42

很好很强大....
不过只装了C#

aaron96031 发表于 2010-6-11 12:44:00

mark

myhonour 发表于 2010-6-11 13:51:14

mark

marvin1213 发表于 2010-6-11 16:33:04

mark

stely 发表于 2010-6-11 17:44:53

这个标记下,一定要试试。

winter 发表于 2010-6-11 19:39:01

没有人用Code::Block么??

zwhold 发表于 2010-6-11 20:47:57

这个支持了

jamiedu 发表于 2010-6-11 21:04:29

用Source Insight的飘过~

cmyldd 发表于 2010-6-12 00:24:58

学习一下

l456789 发表于 2010-6-27 23:11:37

这个要支持.

pjdu 发表于 2010-6-28 17:46:18

mark

maidilong 发表于 2010-7-1 21:46:45

我用的是VC6.0但是这里的路径好像和VS2008不一样吧,你教程里的      参数:$(ItemDir)$(ItemFileName)   在VC6.0里面没有的,所以我的没有成功,编译不过去

yasewang2 发表于 2010-8-10 11:35:40

标记一下

shooly 发表于 2010-8-12 15:50:15

我用C-Free也不错

bh7ohz 发表于 2010-8-14 11:18:06

学习了,谢谢LZ.

lyk07351 发表于 2010-8-15 08:43:37

好方法,顶起来!!!

slshu 发表于 2010-8-17 11:01:22

能编译工程文件?

llssr 发表于 2010-8-17 11:27:35

代码编辑的话notepad++也很好呀

elecfun 发表于 2010-8-20 22:04:54

回复【62楼】maidilong
-----------------------------------------------------------------------

VC6.0里不能直接用这个参数   你使用按钮添加吧





回复【67楼】slshu
-----------------------------------------------------------------------

不能编译工程文件



回复【68楼】bbssr
-----------------------------------------------------------------------

呵呵   听过 没用过    我现在一直用VS2010来写,很舒服的说……

QQ373466062 发表于 2010-9-17 19:41:43

工程管理不知道如何弄

wangma 发表于 2010-10-4 22:50:11

vs2010要注_册不?

ljun 发表于 2010-10-4 23:32:28

mark

tick 发表于 2010-10-4 23:52:08

mark

abc220 发表于 2010-10-5 00:05:57

mark,备用

zhfeng 发表于 2010-10-5 10:16:46

好方法啊,以后所有的开发都用Visual Stdio统一进行

zhfeng 发表于 2010-10-5 11:13:09

是不是Visual C# 2008 Express edition不行啊,装完没看到visual assisit
Win7 32位系统

yoko 发表于 2010-10-5 11:30:56

真希望MDK有这样的功能,强烈要求!做STM32开发时会用到很多结构体,由于不熟,对结构体成员赋值时总是要看结构体定义,甚是不爽,如果有这功能会加快写代码的进度。最后还是强烈要求MDK开发这样的功能!

gc56198 发表于 2010-10-5 11:52:08

mark

zhfeng 发表于 2010-10-5 11:54:48

折腾了半天才发现,EXpress版本不支持插件服务

weiwdr05 发表于 2010-10-5 12:25:29

mark

yywin 发表于 2010-10-5 12:42:03

很方便

MA_J 发表于 2010-10-5 14:09:03

mark

elecfun 发表于 2010-10-5 14:16:23

回复【71楼】wangma
vs2010要注_册不?
-----------------------------------------------------------------------

要注_册的   我下的是已经破_解过的

elecfun 发表于 2010-10-5 14:17:12

回复【79楼】zhfeng
-----------------------------------------------------------------------

EXpress版本没有试过   可能确实不支持插件

fhqjs 发表于 2010-10-5 20:02:39

这个办法好,多谢楼主,收藏

yulri 发表于 2010-10-6 10:56:05

关注中……

yulri 发表于 2010-10-6 15:16:54

连接通不过啊!
---
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

unknown 发表于 2010-10-6 17:55:23

可以用code::blocks直接关联.c,.h文件,支持智能提示,代码补全

XIE2099 发表于 2010-10-6 22:02:17

下载试试,减轻工作是件好事儿

chengluoran 发表于 2010-10-7 00:33:04

MARK

microelec 发表于 2010-10-10 11:40:29

mark

flywater 发表于 2010-10-10 11:56:11

就用KEIL,有感情了!

flywater 发表于 2010-10-10 12:01:28

AVR用还一直用AVRStudio,偶尔尝试一下其它,但做工程还是用它

cy757 发表于 2010-10-11 09:47:01

我的也是连接不了,,,请教楼主是什么原因。
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

chengluoran 发表于 2010-10-11 10:38:09

回复【94楼】cy757
-----------------------------------------------------------------------
你在磁盘根目录下建个项目试试

cy757 发表于 2010-10-11 10:46:24

谢谢chengluoran。
确实是在磁盘根目录下建一个就可以了,代码提示功能还挺好用的。就是每次编译都要先保存;出现语法错误时不能快速定位,这两点不好。

chengluoran 发表于 2010-10-11 11:53:41

好像只要文件路径包含空格就无法连接,期待高手解决

elecfun 发表于 2010-10-11 12:39:07

回复【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

quzegang 发表于 2010-10-11 15:27:12

Mark

theophilus 发表于 2010-10-11 18:33:53

回复【97楼】chengluoran
-----------------------------------------------------------------------

应该是没有加上双引号的原因。
页: [1] 2 3 4
查看完整版本: 教你利用Visual Studio的智能提示,快速编写C51代码