本节书摘来自异步社区《例说51单片机(c语言版)(第3版)》一书中的第1章,第1.5节,作者 张义和 , 王敏男 , 许宏昌 , 余春长,更多章节内容可以访问云栖社区“异步社区”公众号查看
例说51单片机(c语言版)(第3版)
8x51系统的开发流程与一般单片机微控制器的开发流程类似,其基本开发流程可分为软件与硬件两部分,而这两部分可以并行开发。在硬件开发方面,主要是设计原型电路板(prototype),也就是目标板(target board)。在软件开发方面,则是编写源程序(可使用c语言或汇编语言),再经过编译、汇编成为可执行码,然后进行调试/仿真。当完成软件设计后,即可应用在线仿真器(in-circuit emulator,ice),加载该可执行码,然后在目标板上进行在线仿真。若软、硬件设计无误,则可利用ic刻录器将其可执行码刻录到8x51,最后将该8x51插入目标板,即完成设计,如图1-22所示。

图1-22 8x51系统的开发流程
8x51的开发工具非常多,在此只介绍三种较普及的工具。
应用8x51来设计控制电路时,除了8x51的电路设计外,还得编写8x51程序。传统的8x51程序开发大多是在dos环境下,而在windows环境下反倒不是很方便。
如图1-23所示,其中各步骤说明如下。
图1-23 传统的8x51程序开发流程
编辑源程序
首先利用文本编辑程序来编写源程序(source code,即/*.asm),这是以8x51汇编语言所编写的程序,是人们能解读的文字文件。若是在dos环境下编写源程序,可使用pe2之类的文本编辑程序;若是在windows环境下编写源程序,则可使用windows自带的记事本。
汇编与连接
当源程序编辑完成后,紧接着利用8x51的汇编程序,如美国2500ad公司的x8051,将源程序汇编得到目的码(即.obj);再利用连接程序将目的码连接而产生可执行文件(.tsk)或intel的十六进制文件(*.hex)。由于汇编与连接是利用两个不同的程序在dos下依序进行的动作。我们可使用批处理程序来简化操作程序,如下所示为test.bat批处理程序,其功能是让我们一次操作就可完成汇编与连接两个动作。
若要汇编与连接ch1.asm源程序,则在dos命令行下输入:
注意:
不要指定扩展文件名,如此将可省去不少麻烦。
软件仿真
产生tsk文件或hex文件后,可利用8x51的软件仿真程序,如avsim51,进行简单的软件仿真。
在线仿真
在线仿真是将tsk文件或hex文件加载在线仿真器,再以在线仿真器当做8x51,插入我们所开发的目标板上,即可进行在线仿真。当然80x51在线仿真器是不可缺的。而8x51在线仿真器的厂牌、种类繁多,而在光盘附录里介绍的8x51在线仿真器,属于较新一代的8x51在线仿真器。
如果一切都正确,则可利用ic刻录器将hex文件刻录到8x51,该8x51就写入了我们所编写的程序,将它插在目标板上,就完成了此8x51电路设计。
altium designer为一套多功能的电路设计软件,其中最著名的有两部分,第一部分是电路图/电路板的设计工具,也就是大家熟悉的protel电路板设计软件;第二部分是fpga嵌入式系统(embedded system)设计,即tasking。实际上,tasking拥有超过10万个客户,广泛地分布于全世界知名的通信厂商、资通厂商、无线厂商与外围装置厂商等,是嵌入式设计系统的领导品牌。我们可以应用这套软件来开发fpga嵌入式系统、单片机微控制器的软件与硬件。tasking除了提供集成文本编辑器外,还提供编译、调试、嵌入式internet及rtos(real time operation system,实时操作系统)等,并支持多个dsp、8位、16位及32位的嵌入式微处理器。
在tasking里,嵌入式软件的生成流程与一般微型计算机或单片机系统的软件生成流程类似,基本程序都是“编写源程序”→“编译(c语言)”→“汇编”→“连接”→“仿真/调试”→“在线仿真”。如图1-24所示是在tasking里开发fpga嵌入式系统设计或8x51单片机设计的开发流程。
如果是使用c语言编写源程序,则需先经过c语言的编辑器将源程序编译成.src文件;若在编译的过程中出现任何错误情况,将会把错误信息存入文件(即.err文件)中。.src文件与汇编语言编写的源程序相同,可经由汇编器将它汇编而产生目的文件(.obj)。另外,汇编过程也会产生错误信息文件(.ers)及列表文件(.lst)。紧接着再利用连接器连接目的文件与函数库(若在源程序里应用了函数库里的函数),即可产生可执行文件,其中包括三种可执行文件的格式,如intel的十六进制文件(.hex)、ieee—695目的文件(.abs)及motorola s录制文件(*.sre)。而tasking里的调试/仿真及在线仿真就是以ieee—695目的文件为输入。当然,若要使用外部的在线仿真与刻录,则可取用其所产生十六进制文件。
另一方面,我们可同时在altium designer的电路设计环境里设计电路图、电路板,并产生制作电路板所需要的文件以及相关报告。
图1-24 tasking开发流程
keil公司的μvision3集成开发环境(integrated development environment,ide)是一套相当好用的8x51开发软件。在集成开发环境里,包括项目管理器(project manager)、源程序编辑器(editor)、汇编器(assembler)、编译器(compiler)、连接器(linker/locator)、调试器(debugger)等,我们可从建立设计项目(project)开始,然后编辑源程序(c语言或汇编语言)、编译、汇编、连接,再进行调试(调试就是一种程序功能仿真),图1-25所示为其开发流程。
demo/eval/c51.htm)。
究竟有什么理由能让89s51取代89c51成为下一代mcs-51的新主流?最有说服力的莫过于其所提供的在线刻录功能(in-system programmable,isp)。实际上,89c51就具有isp的雏型,而89s51更成熟,从此我们几乎摈弃ic刻录器了,甚至昂贵的在线仿真器也不一定需要。
图1-25 keil μvision 3开发流程
atmel公司所提供的isp电路与程序可让使用者通过个人计算机的并行端口或串行口(rs232c)直接将可执行文件下载到89c51/89s51。如此一来不但可以省掉不少开发工具与设备,也将改写在线仿真的方式,对于初学者帮助很多。而本书也推荐一片89s51在线刻录实验板(usb版),除了isp功能外,还提供一些简单的外围装置,如led、蜂鸣器、拨码开关等,我们可直接这块实验板上开发89s51系统。关于这块实验板的说明,详见光盘附录。