学习单元四 如何将程序“装入”单片机

通过上一单元对指令/程序的认识引发了对指令的好奇和兴趣。有人会问:单片机能认识这些指令吗?这些指令放在单片机中的什么地方?这些指令是如何进入单片机的?单片机又是怎样找到这些指令的?

我们在前面学习的单片机指令如“SETB”、“CLR”、“ACALL”、“SJMP”等称为指令的助记符,即帮助我们记忆单片机指令的符号,这种符号由美国Intel公司设计,都是英文或英文缩写,只能被我们所识别,单片机这种较低级的电子器件是无法直接识别的,更谈不上根据这些英文和符号的指示执行特定的操作。所以必须通过某种编译程序(见学习情景二)把这些指令转换成单片机能识别的、能执行的控制代码(指令的十六进制代码),俗称机器码。将指令的助记符转换成机器码的过程称为编译。如指令“SETB P1.0”经编译后其机器码为“D2H 90H”,指令“CLR P1.0”经编译后其机器码为“C2H 90H”。不同的指令其对应的机器码不同,因而能被单片机识别、执行。用助记符编写的程序经电脑中开发环境编译成机器码后以HEX文件格式保存在电脑硬盘上。单片机中有个专门用于存储程序代码的地方,称为程序存储器(ROM)。将程序装入到单片机,本质上是将程序代码写入单片机ROM中,“写入”也称为“装载”、“下载”、“烧写”等。

通常可以用下面两种方法中的任意一种将HEX文件“写入”到单片机中。

一、利用编程器将程序写入单片机

将程序烧写到可编程目标芯片如单片机、存储器等的装置被称为“编程器”(Programmer),也称“烧写器”,如图1-10所示。

图1-10 各种不同类型的编程器

(a)专业编程器(b)一种较廉价的编程器

编程器的特点是有一个插座,可把单片机或其他存储器芯片插到其中,然后用编程器插座的一个小扳手把单片机或存储器芯片夹(锁)住,这样,单片机或存储器的每一个金属引脚与编程器插座的每一个插孔实现了电气连接,单片机或存储器芯片就做好了接收数据的准备,编程器通过串口、USB口或并口与普通电脑连接,电脑中装有烧写单片机的应用程序控制编程器工作,将HEX文件中的十六进制代码写入单片机ROM中,如图1-11所示。根据程序的长度和编程器的烧写速度,这个烧写过程会持续几秒到几分钟不等。烧写好后,松开编程器插座上的小扳手,将单片机取下来。这时,单片机的程序存储器(ROM)中已经装好了需要执行的各种指令。把单片机插到用户电路板中,接通电源,则单片机就自动开始执行指令,实现对外部器件的控制。

图1-11 利用编程器将程序写入单片机

专业编程器可烧写的芯片品种很多,其数量可达数百种甚至更多,其售价一般都比较高。

二、利用下载线将程序写入单片机

市面上新型单片机如前面提到的AT89S51和STC89C51RC等,几乎都支持ISP(In System Programming)下载功能,俗称在线下载。所谓在线下载就是不使用编程器,而用下载线在用户电路板上直接将程序烧写到可编程目标芯片如单片机、存储器上等。

下载线本质上是一种更简单、更廉价的编程装置,其市场售价一般几十元。常用的下载线有串口型和并口型,如图1-12所示。

图1-12 常见的下载线类型

(a)RS-232串口型下载线(b)并口型下载线

(1)RS-232串口型下载线:如图1-12(a)所示,其一端与电脑RS-232串口相连或通过USB-RS232转接线与电脑USB口相连,另一端通过电路板的串口连接单片机的UART串口。它可将程序下载到单片机中的F1ash-ROM区。电路板上除了需要安排RS-232到TTL的电平转换环节外,不再需要其他硬件辅助电路。这些带UART串口下载功能的单片机,其工作原理是:在单片机上电复位后的一段时间(大约几十~几百毫秒)内,芯片自动检测有无来自单片机串口的有效命令:如果没有,就运行芯片内的用户程序;如果有,就进行ISP下载。支持串口型下载的单片机有很多,如前面提到的STC公司的51系列单片机STC89C51/52RC等,这些芯片内部安排有专门的Flash-ROM区,出厂时已固化有ISP引导程序。

(2)并口型下载线:如图1-12(b)所示,其一端与电脑并口(打印机接口)相连,另一端通过电路板的ISP接口连接单片机的SPI口。它也可将程序下载到单片机中的F1ash-ROM区。这些单片机以SPI口的方式支持串行在线编程,它的4个引脚P1.4、P1.5、P1.6、P1.7分别构成SPI口的SS、MOSI、MISO和SCK,当引脚RST被置为高电平时,允许对芯片进行在线编程和校验。此时电脑并口以双向口方式工作,是SPI通信的主设备,而单片机是SPI通信的从设备。采用并口型下载线烧写程序的单片机有前面提到的Atmel公司的AT89S51/52等。

一款由深圳市雷迈特科技有限公司武汉分公司(http://www.hkzk.com.cn,联系人:赵先生,电话:027-87876894,13995663040,)开发的非常适合初学者的51单片机多功能学习开发板如图1-13所示。

图1-13 STC89-Ⅵ型51单片机多功能学习开发板

(a)开发板提供的两种用来在线烧定程序的接口(b)利用下载线装程序写入单片机

该电路板可采用上述两种类型的下载线将程序写入新型单片机:电路板上有一个RS-232串口(或USB口)和ISP接口,RS-232串口(或USB口)用来将目标程序HEX文件下载到带UART串口ISP功能的单片机,如STC公司的51系列单片机,ISP接口用来将程序下载到支持SPI串行在线编程的单片机,如Atmel公司的51系列单片机。

利用下载线烧写单片机时,下载线的一端连接电脑,另一端与电路板相连,如图1-13(b)所示。通过专用工具软件如STC-ISP、Atmel MCU ISP等,就能把hex机器码文件烧写到单片机中。程序烧写完后,可直接在电路板上运行程序、检验程序功能。关于STC-ISP软件和Atmel MCU ISP软件的用法在学习情景二中有详细介绍。