您当前的位置:五五电子网电子知识电子制作自动控制-单片机MCS-51串行HEX调试器的制作 正文
MCS-51串行HEX调试器的制作

MCS-51串行HEX调试器的制作

点击数:7893 次   录入时间:03-04 11:37:01   整理:http://www.55dianzi.com   自动控制-单片机

  51单片机学习的新手,由于没有仿真器,编写的程序往往只能通过编程器烧写到单片机里,通过观察单片机运行状况来判断程序是否符合要求。烧写次数一多,单片机就容易出现烧写错误,以至不能再次烧写,单片机只得报废。本文介绍一种新型的HEX调试器,由于采用特殊方法,使单片机不再会因为烧写次数多而损坏。

  电路原理

34

  电路原理图如上图所示。

  电路的核心是常用的51单片机。常用的AT89C51和89C52由于成本的限制,内部集成的FLASHROM并不多,而传统的51外部最大可以扩展64KB的程序存储器。利用这个特点,笔者在一块89C51外部扩展了一块64KB的RAM,通过特殊的接法,使其可以像。ROM一样被51访问。利用RAM不因读写次数多而影响寿命的特性,就可以无限制地进行程序的调试而不必再担心单片机的损坏。

  使用89C51时,一般都将EA脚置高,以访问内部程序存储器,而将EA脚置低时将访问外部程序存储器。利用这个功能,向单片机内部的FLASHROM写入一段服务程序,在EA脚为高时,单片机运行该服务程序将PC机端的待调试的程序下载进RAM,然后改变EA脚为低,通过复位重新从RAM中读取代码运行程序。访问RAM程序存储器的要点在于一个与门。单片机访问外部存储器的时序如下图所示。

56

  相比较而言,在两个ALE之间,如果读写数据存储器,PSEN就不会有一个下降脉冲,而RD有一个下降脉冲,由于RD,WR和PSEN三者不能并存,所以相互用与门进行逻辑运算也不会起冲突,因此将RD和PSEN相“与”,就可以用RAM模拟程序存储器,又不会影响数据的读写,并可用程序存储器的方法读取RAM内部代码并运行。

  由于使用了一个与门,单片机同时也可以甩读数据的方式读取程序段的代码,方便了通过电脑下载程序之后的校验。

  元器件选型

  该电路所用均为常用元件;74LS373为常用的锁存器,RAM采用61256(32KB),如果需要,可以换用更大容量的RAM;与门采用74LS08或74LS00,一个与非门,另一个接成非门,两者互相连接,构成一个与门;晶振采用12MHz;串口电平转换采用MAX232或者其他232电路均可;单片机采用AT89C51;其他如电阻、电容、LED则没有特别要求。如果需要节约成本,也可以将MAX232用两个三极管代替,由于三极管代替232的电路比较常见,这里就不再介绍。

  软件使用

  1.上位机软件

  电路上位机软件笔者采用的是串行调试器软件,其界面如下图所示,有兴趣的读者可在本期配刊光盘中找到。

45

  这个软件的使用方法很简单.打开上图的软件界面以后,连上串口和单片机,按动S1开关,使LED点亮(表示EA端为高电平,内部程序段有效)就可以进行调试了。首先打开文件,该软件可以打开IntelHex和Bin文件,并且显示在缓冲区1。“保存文件”按钮可以将Hex文件转化为Bin文件并保存在相应的文件夹下。软件可以工作在两种模式下:Hex调试模式和串口调试模式。Hex调试模式用来调试单片机程序,串口调试模式则可以用作简单的串口调试器。在Hex调试模式下,调试器的波特率是一定的,为1200。有兴趣的读者,可以提高89C51单片机的主频,以提高传输速率;串口调试模式下,可以通过“串口设置”按钮进行串口设置,包括端口号、波特率、检验位,数据位,停止位,串口开启与关闭及调试模式的切换。

  串口设置界面如下图所示。

54

  软件默认为Hex调试模式。点击主界面的“发送”,就可以将读入的IntelHex或者Bin文件通过串日发到单片机,并通过单片机存储到RAM中。缓存区2下的进度条显示发送的进程。

  如果想验证PC机发送的数据是否正确,可以按“校验”,使单片机从RAM中读回已存入的代码发回PC机,与源代码进行比较,并显示在缓存区2,如果正确则显示检验成功。然后,就可以改变S1,使LED熄灭(表示EA端为低电平,外部程序存储器有效),然后按SB,重置单片机,使单片机开始运行外部的程序。

  2.单片机服务程序为了和上位机通信,需要在单片机内部写入一段服务程序,用于代码数据的写入和读出,串口波特率设定为1200。程序代码很小,只有200多个字节,可以用编程器写入单片机一次,以后要应用的单片机程序就直接用PC机通过串口下载即可。由于系统使用12MHz晶振,在中断程序中需要进行数据存取判断处理,所以速度不能太快,以免影响数据的传输。如果需要加快传输速度,可以更改晶振频率,并对波特率相应加大,有兴趣的读者可以自己进行尝试。

  电路测试

  为了测试该电路,笔者采用C语言编写了一个流水灯的程序。该测试程序很简单,在硬件部分只需要在P1.0、P1.1、P1.2三个IO口接三个LED即可(注意,最好限流)。通过软件下载到单片机后,按动S1,改变EA脚的电平,使EA脚的LED熄灭。按SB复位单片机后,程序就开始正常运行,三个LED轮流点亮。至此串行HEX调试器宣告成功。平时不需要下载时,改变软件的模式为串口调试模式,就变成了一个简单的串口调试助手,在缓冲区1输入字符,按动“发送”,就可以将字符串通过串口发送出去。

  在RAM中调试程序的方法在ARM单片机中是很常见的。然而,经过特殊处理,我们可以使51单片机也能轻松地在RAM中调试代码,对于其他不支持RAM调试的单片机,这种方法也是一种很好的启发。




本文关键字:制作  自动控制-单片机电子制作 - 自动控制-单片机