今天和大家一起聊聊有关开发工具。
所谓开发工具,就是利用单片机完成一些列功能所必须的工具,这里当然就特指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的单片机 ,所以:
如果没有这个,(偷个懒)请直接看
第四步:选中这次要玩的片子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 查看