搜索
bottom↓
回复: 364

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

  [复制链接]

出0入134汤圆

发表于 2010-6-6 02:01:39 | 显示全部楼层 |阅读模式
虽然有智能提示的软件有很多,比如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 。确认无误后 点击确定,关闭对话框,完成设置。

(原文件名: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 ,其它同上。完成后确定完成工具的添加。


(原文件名:1.png)

为了方便,把这三个工具添加到工具栏上。打开 工具→自定义,打开 自定义 对话框,切换到 工具栏选项卡,点击 新建 ,添加一个工具栏,名称可任意(这里设为MUCTools)。切换到 命令 选项卡,在 类别 列表里选择 工具 ,在 命令 列表里选择刚刚添加的外部命令。注意,这儿只有 外部工具1、外部工具2等,这是按 外部命令 里的排序给出的。例如 如果第一次添加的C51.EXE在 外部工具 对话框 的 菜单内容 列表排第3个,那么这儿对应的就是 外部工具3。找到后 拖动 外部工具3 到刚刚添加的工具栏 MUCTools 里,然后在其上右击,可编辑其样式。依次添加其余两个工具。


(原文件名:2.png)

OK,此时打开一个单片机的C程序,点第一工具C51.EXE编译,没有错误后点第二工具BL51.EXE链接,没有错误的话就可以点第三个工具OHX51.EXE生成HEX文件。没有错误产生就会在C程序同目录下生成同名的HEX文件。


(原文件名: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)

(原文件名:11.png)



为了使用Visual Assist 强大的代码提示功能,设置VAssistX,Suggestions改为MAX:


(原文件名:9.png)

完成后,就慢慢享受编程的乐趣吧!

(原文件名:5.png)

VS2010下的:

(原文件名:10.png)

出0入134汤圆

 楼主| 发表于 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[LCG].rar

出0入0汤圆

发表于 2010-6-6 02:23:03 | 显示全部楼层
MARK IDE
MARK 集成开发环境

出0入0汤圆

发表于 2010-6-6 06:47:47 | 显示全部楼层
谁有更好的办法。楼主的办法太复杂了。不过看到希望了

出0入0汤圆

发表于 2010-6-6 07:49:04 | 显示全部楼层
这个办法好,多谢楼主,收藏

出0入0汤圆

发表于 2010-6-6 08:03:20 | 显示全部楼层
MARK
记住Visual Studio 2008/2010的下载地址

出0入0汤圆

发表于 2010-6-6 08:05:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-6 08:42:18 | 显示全部楼层
高射炮打蚊子。使用UltraEdit建立一个编译环境就蛮好了。

出0入0汤圆

发表于 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/

出0入0汤圆

发表于 2010-6-6 09:36:12 | 显示全部楼层
用eclipse的飘过

出0入264汤圆

发表于 2010-6-6 09:45:03 | 显示全部楼层
谢谢。

出0入0汤圆

发表于 2010-6-6 10:18:31 | 显示全部楼层
mark, 以前用VC6 + VAX.

出0入0汤圆

发表于 2010-6-6 10:24:39 | 显示全部楼层
mark

出50入4汤圆

发表于 2010-6-6 11:04:09 | 显示全部楼层
有必要搞这么麻烦吗。不就写个代码?还装个4.3G的

出0入134汤圆

 楼主| 发表于 2010-6-6 13:47:00 | 显示全部楼层
回复【7楼】tear086 .COM 缺氧
-----------------------------------------------------------------------
当然 Ultra Edit也是可以的,直接调用批理文件也是可以的

(原文件名:无标题.png)

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


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

出0入0汤圆

发表于 2010-6-6 13:52:38 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2010-6-6 13:53:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-7 00:25:33 | 显示全部楼层
VAX破解下不了了.

出0入0汤圆

发表于 2010-6-7 00:31:58 | 显示全部楼层
马克

出0入42汤圆

发表于 2010-6-7 00:49:14 | 显示全部楼层
哎,slickedit用户跳过。
make, make prog, make debug等等。。

出0入0汤圆

发表于 2010-6-7 07:35:18 | 显示全部楼层
mark,教你利用Visual Studio的智能提示,快速编写C51代码

出0入12汤圆

发表于 2010-6-7 08:20:28 | 显示全部楼层
这个一定要标记

出0入0汤圆

发表于 2010-6-7 08:49:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-7 10:16:48 | 显示全部楼层
mark!我也用C# 有空弄一下!

出0入0汤圆

发表于 2010-6-7 10:22:33 | 显示全部楼层
这个要顶!!

出0入0汤圆

发表于 2010-6-7 10:27:48 | 显示全部楼层
cool

出0入0汤圆

发表于 2010-6-7 11:52:46 | 显示全部楼层
留用

出0入0汤圆

发表于 2010-6-7 12:01:23 | 显示全部楼层
好办法。。。。。。。。

出0入0汤圆

发表于 2010-6-7 12:01:41 | 显示全部楼层
8qaj 错

出0入0汤圆

发表于 2010-6-7 13:53:45 | 显示全部楼层
MARK~~~晚上马上下载试试~~~多谢

出0入0汤圆

发表于 2010-6-7 14:12:46 | 显示全部楼层
好复杂吖~ 不敢试~

出0入0汤圆

发表于 2010-6-8 08:20:31 | 显示全部楼层
mark

出110入12汤圆

发表于 2010-6-8 09:04:51 | 显示全部楼层
不错~~

出0入0汤圆

发表于 2010-6-8 09:22:59 | 显示全部楼层
mark

出0入0汤圆

发表于 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.

出0入0汤圆

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

出0入0汤圆

发表于 2010-6-8 11:30:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-8 11:35:31 | 显示全部楼层
为什么我的启动vs2005然后运行显示不能打开AT89C52

出0入0汤圆

发表于 2010-6-8 11:52:05 | 显示全部楼层
用这个写51,光看体积就吓死人了
我用VIM+make,舒服得很

出0入0汤圆

发表于 2010-6-8 15:14:39 | 显示全部楼层
make

出0入0汤圆

发表于 2010-6-8 15:36:46 | 显示全部楼层
刚刚看看到,友情帮顶,哈哈。

出0入0汤圆

发表于 2010-6-8 15:47:01 | 显示全部楼层
make

出0入0汤圆

发表于 2010-6-8 16:32:38 | 显示全部楼层
谢谢【35楼】 ilcvm 建议, 准备试试.

出0入8汤圆

发表于 2010-6-8 17:04:56 | 显示全部楼层
jihao

出0入0汤圆

发表于 2010-6-8 17:59:52 | 显示全部楼层
标记一下。

出0入0汤圆

发表于 2010-6-8 18:25:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-8 19:55:07 | 显示全部楼层
有机会可以试一下

出0入0汤圆

发表于 2010-6-8 20:51:27 | 显示全部楼层
以后方便了哦! 谢谢楼主

出0入0汤圆

发表于 2010-6-8 20:54:35 | 显示全部楼层
mark

出0入4汤圆

发表于 2010-6-8 22:13:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-9 08:00:42 | 显示全部楼层
很好很强大....
不过只装了C#

出0入0汤圆

发表于 2010-6-11 12:44:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-11 13:51:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-11 16:33:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-11 17:44:53 | 显示全部楼层
这个标记下,一定要试试。

出0入0汤圆

发表于 2010-6-11 19:39:01 | 显示全部楼层
没有人用Code::Block么??

出0入0汤圆

发表于 2010-6-11 20:47:57 | 显示全部楼层
这个支持了

出0入0汤圆

发表于 2010-6-11 21:04:29 | 显示全部楼层
用Source Insight的飘过~

出0入0汤圆

发表于 2010-6-12 00:24:58 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2010-6-27 23:11:37 | 显示全部楼层
这个要支持.

出0入0汤圆

发表于 2010-6-28 17:46:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-1 21:46:45 | 显示全部楼层
我用的是VC6.0但是这里的路径好像和VS2008不一样吧,你教程里的      参数:$(ItemDir)$(ItemFileName)   在VC6.0里面没有的,所以我的没有成功,编译不过去

出0入0汤圆

发表于 2010-8-10 11:35:40 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2010-8-12 15:50:15 | 显示全部楼层
我用C-Free也不错

出0入0汤圆

发表于 2010-8-14 11:18:06 | 显示全部楼层
学习了,谢谢LZ.

出0入0汤圆

发表于 2010-8-15 08:43:37 | 显示全部楼层
好方法,顶起来!!!

出0入0汤圆

发表于 2010-8-17 11:01:22 | 显示全部楼层
能编译工程文件?

出0入127汤圆

发表于 2010-8-17 11:27:35 | 显示全部楼层
代码编辑的话notepad++也很好呀

出0入134汤圆

 楼主| 发表于 2010-8-20 22:04:54 | 显示全部楼层
回复【62楼】maidilong
-----------------------------------------------------------------------

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





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

不能编译工程文件



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

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

出0入0汤圆

发表于 2010-9-17 19:41:43 | 显示全部楼层
工程管理不知道如何弄

出0入0汤圆

发表于 2010-10-4 22:50:11 | 显示全部楼层
vs2010要注_册不?

出0入0汤圆

发表于 2010-10-4 23:32:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-4 23:52:08 | 显示全部楼层
mark

出50入0汤圆

发表于 2010-10-5 00:05:57 | 显示全部楼层
mark,备用

出0入0汤圆

发表于 2010-10-5 10:16:46 | 显示全部楼层
好方法啊,以后所有的开发都用Visual Stdio统一进行

出0入0汤圆

发表于 2010-10-5 11:13:09 | 显示全部楼层
是不是Visual C# 2008 Express edition不行啊,装完没看到visual assisit
Win7 32位系统

出0入0汤圆

发表于 2010-10-5 11:30:56 | 显示全部楼层
真希望MDK有这样的功能,强烈要求!做STM32开发时会用到很多结构体,由于不熟,对结构体成员赋值时总是要看结构体定义,甚是不爽,如果有这功能会加快写代码的进度。最后还是强烈要求MDK开发这样的功能!

出0入0汤圆

发表于 2010-10-5 11:52:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-5 11:54:48 | 显示全部楼层
折腾了半天才发现,EXpress版本不支持插件服务

出0入0汤圆

发表于 2010-10-5 12:25:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-5 12:42:03 | 显示全部楼层
很方便

出0入0汤圆

发表于 2010-10-5 14:09:03 | 显示全部楼层
mark

出0入134汤圆

 楼主| 发表于 2010-10-5 14:16:23 | 显示全部楼层
回复【71楼】wangma
vs2010要注_册不?
-----------------------------------------------------------------------

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

出0入134汤圆

 楼主| 发表于 2010-10-5 14:17:12 | 显示全部楼层
回复【79楼】zhfeng
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2010-10-5 20:02:39 | 显示全部楼层
这个办法好,多谢楼主,收藏

出0入0汤圆

发表于 2010-10-6 10:56:05 | 显示全部楼层
关注中……

出0入0汤圆

发表于 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

出0入0汤圆

发表于 2010-10-6 17:55:23 | 显示全部楼层
可以用code::blocks直接关联.c,.h文件,支持智能提示,代码补全

出0入143汤圆

发表于 2010-10-6 22:02:17 | 显示全部楼层
下载试试,减轻工作是件好事儿

出0入0汤圆

发表于 2010-10-7 00:33:04 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-10-10 11:40:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-10 11:56:11 | 显示全部楼层
就用KEIL,有感情了!

出0入0汤圆

发表于 2010-10-10 12:01:28 | 显示全部楼层
AVR用还一直用AVRStudio,偶尔尝试一下其它,但做工程还是用它

出0入0汤圆

发表于 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

出0入0汤圆

发表于 2010-10-11 10:38:09 | 显示全部楼层
回复【94楼】cy757  
-----------------------------------------------------------------------
你在磁盘根目录下建个项目试试

出0入0汤圆

发表于 2010-10-11 10:46:24 | 显示全部楼层
谢谢chengluoran。
确实是在磁盘根目录下建一个就可以了,代码提示功能还挺好用的。就是每次编译都要先保存;出现语法错误时不能快速定位,这两点不好。

出0入0汤圆

发表于 2010-10-11 11:53:41 | 显示全部楼层
好像只要文件路径包含空格就无法连接,期待高手解决

出0入134汤圆

 楼主| 发表于 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

出0入0汤圆

发表于 2010-10-11 15:27:12 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-10-11 18:33:53 | 显示全部楼层
回复【97楼】chengluoran  
-----------------------------------------------------------------------

应该是没有加上双引号的原因。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 06:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表