51入门教程:轻松掌握开发工具必备技能

发表时间: 2016-04-15 13:44

今天和大家一起聊聊有关开发工具

所谓开发工具,就是利用单片机完成一些列功能所必须的工具,这里当然就特指51单片机咯。

对于开发工具来说,从个人理解来讲,还得分为软件工具和硬件工具。

所谓软件工具,主要是指在使用单片机时所需要的软件编译环境及其辅助软件;而硬件工具,则是指我们所需要开发活着准备使用的对象及其辅助硬件结构。

软件工具

单片机软件工具的最直接最直观的理解,就是将我们编程所使用的语言,不管是C语言、汇编语言或者是其它更高级的语言,编译形成单片机所能够识别的命令的一系列工具。要知道,C语言代码其实是由一些关键字和某些特定的代码结构所组成,这些我们的51单片机其实是完全无法识别这类代码。

单片机能够识别啥?必须是0101101这种机器码啊。最底层的寄存器、控制器或者逻辑运算单元便是1010101….这种二进制的信号,有了各种内部总线和指令集的支持后,理论上2的n次方(n在可设计掌控的范围内)进制的文件,单片机都是可以识别并装载执行的。最经典的一个可执行文件类型,便是intel为了统一天下,作为标准推出的一种十六进制HEX格式ASCII文件,用来记载由十六进制数所组成的地址段、机器码和数据常量,同时这种文件亦可存储进51单片机的片上flash,并上电加载使用。

说白了,HEX就是传说中的固件。

这种标准格式的文件,市面上大部分的微控制器都可以支持。注意,只是微控制器支持这种格式的文件,并不是一个HEX文件可以被很多不同类的单片机使用。除了HEX文件外,BIN、ELF等等文件格式,都可以起到类似作用。只是不同组织、不同标准的区别而已。

So,吐了这么多HEX文件的口水。必须要找到一种在电脑上可以把C语言或者其他编程语言转化成HEX文件的工具。这个工具,也就是楼主所提到的软件工具。

再具体点,叫做IDE (Integrated Development Environment,集成开发环境),各种不同的高级语言,都会对应有一套IDE,这里特指能够处理C语言的IDE。为毛会有集成一词?堆代码,总得有个代码编辑器吧,完成关键字高亮、缩进等等代码文本编辑功能;转成单片机可识别的HEX等文件,总得有个c编译器吧,把c语言进行语法规则检查、编译;如果想单步仿真调试,总得有个调试模拟器吧,无论是离线还是在线,观察各个内存地址中的数据;在windows或者IOS下面,鼠标点击各种按钮完成编译、下载、单步等等操作,的要有个图形化界面吧。林林总总,一个IDE软件就能够综合上面所有的功能,所以才叫集成开发环境呀。当然,如果您足够牛x,可以自己去搭建一个基于GCC编译器,前端、中介、后端接口丰富的开发环境。

呃,扯远了,咱老老实实用IDE吧。说白了,windows下的IDE其实好多都是基于GCC的。不同特色的IDE很多,最常见、教程最多、使用最广泛的,不得不说便是IAR for 8051和Keil C51。

值得注意的是,Keil是一家做IDE的公司,Keil C51是51系列的IDE,而Keil MDK(名称很多,MDK-ARM,Realview MDK、I-MDK、uVision4 等),则是针对ARM系列控制器提供的一个完整开发环境。

由于历史原因,楼主接触Keil C51相对比较多,这里也不再对两者进行比较。直接开始接触咱们的Keil C51吧。

安装啥的,需要贴图吗?不需要吗?需要吗?不需要吗?……

把安装程序、和谐补丁以及和谐说明统一打包上来吧

需要的筒子撸去:(附件老是传不上......)

在Keil C51或者其他IDE中,都引入了一个Project的概念

不要想得那么复杂,其实就是为了方便管理开发文档

咱来一步步建立一个看看

其实其他IDE环境也是大同小异

第一步:Project—New μVision Project



第二步:您的新工程命名且保存在哪,这里直接c:testtest.uvproj

第三步:选择MCU的数据库,咱们这里要使用STC的单片机 ,所以:

如果没有这个,(偷个懒)请直接看http://jingyan.baidu.com/article/cbf0e500f2b2512eaa289330.html

第四步:选中这次要玩的片子STC89C52RC

第五步:新建C文件,并添加至工程

File—New,得到一空白文本文件

随便写个c的基本框架吧

要包含单片机的头文件哟,打开这个头文件,可以看到很多类似

sfr P0 = 0x80;

sbit EA = 0xAF;

的语句

这些语句描述了一些符号的定义,也就是符号名与地址的对应关系

作为初学者,如果没有认真研究内核结构,特别是地址的分配情况

可以大致了解一下

随便看一个:

sfr P0 = 0x80;

这里定义P0口与地址0x80对应,即指定P0口的物理地址就是0x80

Sfr并非标准C的关键字,不过Keil为了能直接访问SFR提供的一个中间关键字

基本用法大概是:sfr 变量名=地址值。

其实这种过于接近底层的头文件,新手大可不必过于纠结

还是那句话,会用就ok

包含起这个头文件,再写个main

#include <reg52.h>

int main()

{

return 0;

Save一下,记得保存成c文件哟

然后把这个文件添加进工程

像这样:

然后编译一下,吼吼

成功咧

完事儿了么?总感觉还差点啥,没错

HEX文件在哪?

Keil C51默认是不生成Hex文件的,需要手动设置一下

1234,设置完毕,路径啥的,自行按需修改

再编译一次瞧瞧

控制台打印信息多了一行

再看看工程的子目录下,hex文件生成了

Oye,第一个工程就撸好了

当然,这个是最简单的过程

如果需要包含头文件、如果需要使用封装lib、如果需要整理工程文件架构……

嗯,需要实际动手操练的还有很多

但是,IDE只是一个工具

千万不要被它牵着鼻子走,或许多试试其它的IDE

没准会有新的感受

硬件工具

有开发板最好,没有的话,至少也需要有一个最小系统吧

楼主计划使用一块51的最小系统,来完成这次温故之旅

把HEX烧写进51单片机,还需要一个烧写器吧

STC的片子还算亲民,不需要专门的烧写器

直接使用USB2Uart的RX、TX管脚就可以进行HEX文件的烧写

不过需要冷启动,有时USB2Uart的灌电流会引起51单片机掉电不正常

最好能串接合适的电阻

先看看USB2Uart

就是这货:

注意,是USB转TTL电平哟

不是USB转RS232电平呢

通常来看,DB9接口的往往就是232电平

切记232电平不能接入单片机哟,烧了就自己吃吧

再看看咱们的主角STC89C52RC


值得注意的是,刚刚接触的童鞋

往往烧写器和仿真器分不大清楚

虽然两者都需要遵循一定的协议进行数据的交互

但是烧写器只负责把固件烧写进单片机,无法进行在线调试

而仿真器,除了可以烧写进单片机(一些在RAM调试的不在此讨论范围内)

还能够单步执行每条语句、设置断点等等调试功能

区别还是蛮大的

这里的USB2Uart仅作为烧写器存在

今天先到这里吧

最小系统结构、如何烧程序

下次再慢慢聊。

更多内容请关注“云汉电子社区”微信公众号平台,或者登录云汉电子社区官网bbs.ickey.cn 查看