至于你说的“visual studio 2010也可以编写(AVR 的)汇编语言程序”可能有点不正确,应该是说,官方的 Atmel Studio 的 IDE 是用微软的 VS Shell 做的,作为地球上最好(宇宙最最好码农不那么认为)的商用 IDE,VS 用起来可以说是非常爽,微软也很大方让 VS 的 Shell 可以免费用作它用,比如你可以开发一个插件让它给另一种语言、编译器作为 IDE 使用。那么,开发 AVR,就有两种方式可以用到 VS IDE,
1、官方的 Ateml Studio,就是 Ateml 用 VS Shell 为基础开发的一整套编译调试方案,你说的应该是这个,但要注意,这不是微软的 VS,你安装微软 VS 还是没用的 你要去 Ateml(现在是 Microchip)下载 Ateml Studio 来安装才行,安装 Ateml Studio 的时候不管你电脑里是否有 VS,都会再装一个 VS Shell 给你,然后运行 Ateml Studio 就会打开这个单独安装的 VS Shell。
另外,Atmel Studio 不止可以用汇编,现在(上一代我记得都)内置 GCC,你可以用 C 来写代码了
2、用 Arduino 开发 AVR,在微软的 Visual Studio 里你可以在扩展插件处下载一个 Arduino for VS 的插件,然后不管啥版本 VS 都能直接用来开发 Arduino,而且用的就是你当前打开的 VS,不是另外安装的一份 Shell。当然既然是 Arduino 所以用的语言也是 Arduino 就是了
用 Atmel Studio 编译的代码,可以用 Atmel Studio 自己烧入 AVR 中,前提是你的烧录器被支持,所以我用盗版 STK500 就是这个缘故 打开烧录工具就能烧进去,我用的是第三方编译器,也可以用官方工具烧录,指定一个 ROM 文件就行,注意可以烧入单片机的是编译后的二进制代码文件(.hex),汇编文件(.asm)是不能烧进去的,还得再最终编译一次,不过我记得大多数第三方工具都能直接编译出最终的二进制文件而不是只给你一个汇编的中间文件才对。
C/C++,Java,Basic,Python...是语言,汇编当然也是一种语言,不管是 C++ 还是汇编,最终都要经过编译器编译成二进制代码才能被机器识别。IDE 把一整套玩意,包含文本编辑器、编译器、调试器、资源管理器等等一大堆打包给你了。但它们是可以相互独立的,比如你可以不用 IDE 来写代码,直接用一个文本编辑器比如 Windows 的记事本写代码,然后让编译器编译也可以,但为什么除了宇宙最好码农之外的普通程序员和业余爱好者都喜欢用 IDE 呢,因为 IDE 的文本编辑器往往(但不一定)自带对象查看、语法高亮、代码自动完成和拼写之类低级错误检查之类功能,对除了宇宙最好码农之外的普通人而言比较方便。
Visual Studio 是微软的 IDE,包含一个宇宙最好码农之外人人称颂的文本编辑器,代码资源管理器等等,这些叫做 Shell,它就是你打开 VS 程序时看到的界面。除了 Shell,完整的 VS 还包含几个语言(C++,C#,Basic...)的编译器和很多小玩意(.net FW 啦,Windows SDK 啦,Xamarin 啦...)。很多码农和业余爱好者,尤其是那些本身也做 Windows 开发的人员也乐于使用 VS 做各种开发,哪怕不是 Windows 下的开发也一样,因为人家习惯了嘛 前面说过,文本编辑器和编译器不是一个东西,所以,你可以给 VS 引入一个外部的编译器,这样你可以做到在 VS 环境下用 VS 的文本编辑器写代码(甚至用它的管理器管理代码和各种开发资源),然后调用外部编译器编译,在 Windows + VS 下生成其它运行环境的最终二进制文件,比如 for macOS,for iOS,for 安卓...,甚至 for C51
你说这个其实就是用 VS 开发 C51 的一种情况,当然只装一个 Visual Assist 是不行的,它不是编译器,不能把你在 VS 里写的 C/C++ 代码编译成 51 的二进制代码,其实,你还需要装 Keil,然后让 Keil C51 编译器作为 VS 的外部编译器(C51、LX51、OHX51)才可以。Visual Assist 是什么呢,是一个 VS 的插件,可以增强 VS 的文本编辑器的语法高亮拼写检查之类的功能,为什么用 VS 玩 51 的会装它呢,因为 51 或者说现行的这些 51 编译器的一些关键字不是很标准,或者说太贴近硬件了,而 VS 作为高级语言的 IDE,它的语法更抽象一些,所以默认地一些关键字 VS 自身的文本编辑器的检查规划可能会认为是错误的,或者不会高亮一些玩意,Visual Assist 则起到这个作用。
当然你可能会觉得奇怪,为什么不直接用 Keil(的 IDE)写代码呢?很简单,因为对用惯 VS 的人来说,Keil 或者说绝大多数单片机 IDE 简直是不人道,这也是为何 Atmel 后来直接用 VS Shell 来做 Atmel Studio 的缘故。一个好用的 IDE 本身也是开发商耗费很多精力逐渐开发并在和用户的交互中完善的,微软作为世界最大的微机商用软件开发商,它有足够多攻城狮和用户去完善 VS 的 IDE,而大多数其它厂家没有这个条件。
所以,AVR 用户可以直接用 Atmel Studio,因为那是 Atmel 直接用 VS Shell 开发成的。而 51 则没有厂商这样做,它们宁可继续用自己做出来的不人道 IDE 也不肯拥抱微软,因此一些习惯了 VS 的用户就通过引入外部编译器等方式在 VS 下开发 51,或者做其它开发。
谢谢washu老师,,语言、编译器、IDE(集成开发环境),除了计算机语言略知一二,编译器和IDE还不太熟悉,尤其是IDE(集成开发环境),编译器或者烧录器和连接线还有计算机语言有点混,taobao购物车添加开发板不知道开发板如何和电脑连接,不同开发板和编译器怎么配套买,确实很困惑,以为 VS用c或BASIC编程在转换为汇编语言和二进制注入单片机就行了, 看到编译器还带芯片有点茫然,不知道编译器或者烧录器是专门负责编译是在 Windows + VS 下生成其它运行环境的最终二进制文件,比如 for macOS,for iOS,for 安卓...,甚至 for C51不单单是单片机用编译器。
这么系统,这么专业的讲解,受益匪浅,再次表示感谢!!!!
编译器:这是软件,作用是将您用各种高级语言写出的程序“转换”成单片机能读得懂的二进制代码的工具,“转换”过程叫编译。编译结果是后缀名为HEX或BIN的二进制文件。各种单片机都有对应的编译器, for C51的编译器只针对51芯片,专人专用。有些编译器兼容很多芯片,编译前要手工选择对应的芯片类型、型号。