从事单片机设计和开发的技术人员目前一般采用以下常用的方法开发单片机产品:首先利用单片机仿真设备进行硬件和软件的仿真调试,然后将调试通过的目标代码用程序烧写器固化到单片机的程序存储器中。在这个过程中,程序烧写器是必不可少的开发工具。程序烧写器一般价格较昂贵,对于初学者来说是一笔不小的开支,并将直接影响到初学者进一步学习开发单片机的积极性。另外,以后每修改一次源程序就要将单片机芯片从目标板上取出,再将更新后的目标代码重新固化到单片机芯片中,这样调试时就会由于频繁地插拔单片机芯片而对芯片和电路板带来相应的物理损坏。借助程序烧写器进行单片机编程的缺点是烧写设备昂贵,烧写操作麻烦,不便于实现在系统编程(ISP)。为了克服上述缺点和局限性,一些80C51的新型兼容品设计了串行编程能力,也就是在芯片内部设置了实现“串行编程接口逻辑”硬件功能。
AT89S系列单片机其内部都是在标准80C51的基础上额外设计了一个实现“串行编程接口逻辑”硬件功能,支持单片机芯片在系统编程(ISP)。
ISP是系统在线可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,对于已经编程的器件也可以用ISP方式擦除或再编程。ISP的实现比较简单,通常的做法是芯片内部的程序存储器可以由上位机的软件通过同步串行通信接口SPI来进行改写,对于单片机来说可以通过SPI或其他的串行接口接收上位机传来的数据并写入程序存储器中。ISP技术的优势是不需要编程器也可以进行单片机的实验和开发,既节省了单片机开发的成本,又免去了调试时频繁插拔芯片的麻烦。ISP技术是未来单片机发展的方向。
ATMEL公司推出的AT89S系列单片机支持ISP功能。AT89S系列单片机中的AT89S52单片机具有较强的功能和较高的性能价格比,因此本文选用AT89S系列单片机中的典型芯片AT89S52为例来介绍AT89S系列单片机的ISP原理。
AT89S52单片机具有在线编程功能,即在RST引脚处在高电平的情况下,利用P1.5/MOSI(串行数据输入端),P1.6/MISO(串行数据输出端),P1.7/SCK(同步时钟信号输入端)三个引脚的数据设置或传送实现程序下载的功能。AT89S52单片机串行编程接口如图2所示。