1 当前常用开发模式
目前,基本上有两种开发模式可供选择:用仿真器、用编程器。
① 用仿真器。优点:方便,可以设置断点,可以观察存储器及寄存器的内容。缺点:价格昂贵,不同类型的单片机要购买不同的仿真器;仿真器终究不是单片机,有时代码在仿真器上能通过,但在单片机中不能正常工作,反而增加了调试的难度。
② 用编程器。优点:价格相对便宜,通常一款编程器可编程多种器件。缺点:操作相当不便,每次要将芯片在目标板与编程器之间转移,并且还要在编译操作界面与编程器操作界面之间切换,大部分时间在做简单的重复工作。
2 新的开发模式介绍及芯片选择
本文介绍的开发工具采用一种新的开发模式(类似于编程器开发模式)。由于利用了芯片的在系统编程功能,因此不需要移动芯片。在软件设计时设计成:一旦代码文件被重新编过,即自动到芯片,并自动复位运行,是真正的“所编即所得”。
目前很多单片机都支持在系统编程。8051系列单片机支持在系统编程的也很多,但大多数是支持通过PC机的串口对单片机进行编程。这样有四个不方便的地方:一是项目本身与PC机串行通信不方便;二是要增加1片MAX232电平转换芯片;三是有的芯片要按特定的步骤进入模式,编程过程需要手工干预;四是有的芯片需要固件(定制的程序)的支持,如果不小心损坏了固件,则芯片的在系统编程功能也没有了。
经过比较,Atmel公司生产的AT89S8252是一种比较理想的芯片,适合制作开发工具。此芯片有如下特点:
3 AT89S8252串行编程
(1)AT89S8252串行编程模式
当芯片的RST引脚置高电平时,所有程序和数据存储器可以通过SPI总线接口[SCK,MOSI(input),MISO(output)]编程。RST变高以后,在编程或擦除操作之前必须首先发送一条编程允许命令。在串行编程模式下,芯片会在字节编程之前自动插入一个擦除周期。因此,除非芯片的代码保护位被编程,编程之前不需要执行全片擦除命令。SPI接口之SCK时钟频率须低于晶振频率的1/40。
(2)AT89S8252串行编程步骤
① 在XTAL1与XTAL2之间连接一个3~24MHz的晶振;在VCC与GND之前加上电源电压,将RST置高,等待10ms。
② 发送串行编程允许命令。
③ 发送写/读/擦除等命令及数据,串行数据高位在前,低位在后,数据在时钟的上升沿锁定。
④ 如果上一步是写命令,至少等待2.5ms。
⑤ 需要时重复③、④两步。
⑥ 将RST置低,芯片开始运行。
(3)AT89S8252串行编程命令
AT89S8252串行编程命令如表1所列。
![]() |
4)AT89S8252串行编程时序图
AT89S8252串行编程时序如图1所示。
![]() |
4 硬件设计
① 通过计算机并口与单片机SPI口连接;
② 为了保护计算机并口,需要增加1片74HC244作为隔离。
实用的原理图如图2所示。(已经过实践检验,可放心使用。)
![]() |
打印端口的基地址一般为0x278、0x378或0x3BC,可以从控制面板中查到。为了方便读者,表2列出了常用打印端口引脚及寄存器位元的说明。
![]() |
6 Intel HEX 格式文件
由于一般编译软件产生的用于写入芯片的文件都是Intel HEX格式的文件。Intel HEX文件属于文本文件,可以用记事本查看。一个Intel HEX文件的一行称为一个记录,每个记录都是由十六进制字符组成的,两个字符表示一个字节的值。Intel HEX文件通常由若干条记录组成,每个记录都具有如下的形式:
:LLAAAATTDD...DDCC
“:”——记录的起始标志;
LL——记录长度,表示该记录中的数据字节数;
AAAA——数据装入的首地址(16位);
TT——记录类型,00表示数据记录,01表示文件结束;(注意:有的编译软件会产生大于01的记录类型,本应用中对大于01记录类型的记录忽略掉即可。)
DD——数据值(字节);
CC——校验和。(将其本身与记录中除起始标志外的所有字节相加应为0,不为0则有错。)
VB编程详细说明见本刊网络补充版(https://www.dpj.com.cn)。(由于各子程序的流程都较简单,所以直接给出源码,而未画出流程图。程序采用由底至顶的设计方法。)
结 语
虽然上述程序能实现各种基本的功能,但并不完善,并未考虑各种异常情况,读者可根据实际情况进行完善。编程功力较差的朋友可直接到笔者的网站(http: //www.mcudiy.com)相对较完善的应用程序 。如果充分理解了上述程序,那么DIY一个AVR或PIC单片机的开发工具也非难事。在笔者的网站也有制作完成的“MCS51/AVR/PIC三合一器资料”供爱好者。
由于AT89S8252的价格还是较贵,所以现在市场上较难买,不过Atmel公司推出的替代AT89C51/52的AT89S51/52也有在系统编程功能,且价格便宜。其在系统编程的实现方法与AT89S8252类似,对本例部分程序稍作修改即可支持该器件。笔者制作的“MCS51/AVR/PIC三合一器”增加了对AT89S51/52的支持。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。