P89V51RD2是PHILIPS公司推出的51系列的新型微控制器,它包含64KB Flash和1024字节的数据RAM,支持并行和串行的在系统编程(ISP)和在应用中编程(IAP),具有SPI和增强型UART,包含一个PCA(可编程计数器阵列),具有PWM和捕获/比较功能。该芯片有一个最突出的特点就是带有自调试功能 (SoftICE),该功能使得芯片可以在Keil μVision2编程环境下用Keil Monitor-51 Driver直接调试程序。 为帮助用户尽快熟悉并掌握P89V51RD2系列单片机的SoftICE特性,作者用该单片机制作了一个简易的仿真器,配合使用Keil μVision2的硬件仿真环境,可实现对程序的单步仿真、多步仿真及全速运行下的仿真。 一、 简易仿真器设计原理 简易仿真头电路主要由RS232通信电路、电源和晶振部分组成。MAX232芯片负责实现单片机和PC机之间的联机通信,用户可通过RS232接口直接进行ISP操作,方便用户程序下载运行;仿真头的供电电源为5V,采用11.0692M的晶振。本仿真器可以仿真标准51系列的所有单片机,本文讲述的是P89V51RD2系列单片机SoftICE模式下的仿真,因此在仿真头上插入P89V51RD2BN单片机。以下是仿真头的原理图:
仿真头电路板上有两个指示灯,通过指示灯可以判断仿真头工作的情况: 1) 上电后,仿真头的电源指示灯POW点亮,方便用户检查电源供电的可靠性; 2) 和PC联机后,正常通信的情况下串口通信指示灯DBG闪烁,方便用户检查通信的正确与否; 从原理图中可以看出,仿真头占用串口资源和PC机通信,用于在线调试,而标准51系列单片机只有一个串行通信接口,因此该简易仿真头不能仿真和串口相关的实验,这一点用户在使用时需要注意。 二、在Keil μVision2 环境下仿真 P89V51RD2系列具有在系统编程(ISP)的特性,与内部固件的结合可实现通过串口对单片机的编程,固件由PHILIPS提供并嵌入到每一个P89V51RD2芯片当中,在系统编程(ISP)有很多种命令/数据功能,使用时应根据需要设置成相应的模式,以下将讲述P89V51RD2××系列单片机在SoftICE模式下的调试方法。 P89V51RD2的SoftICE模式下的调试需要仿真器结合Keil μVision2的硬件仿真进行。调试主要分为三步:设置SoftICE模式、设置硬件仿真环境和调试程序。 1、设置SoftICE模式 使用Flash Magic软件设置P89V51RD2进入SoftICE模式。运行Flash Magic软件,在“DEVICE”中选择P89V51RD2单片机。点击“ISP”菜单,选择“Enable SoftICE”即可设置单片机进入SoftICE模式。设置界面如图所示。若ISP菜单中没有此选项,说明所使用的Flash Magic的版本过旧,需要升级到新的版本。新版本的下载地址:http://www.philipsmcu.com。
在使用Flash Magic时,有时会出现如图的错误警告对话框,提示P89V51RD2未进入ISP模式。这时只需按复位键即可设置单片机进入ISP模式。
2、设置仿真环境 程序的编译和仿真在Keil μVision2环境下进行,在调试程序之前,需要对工程进行Debug设置,选择软件仿真或硬件仿真。软件仿真使用计算机来模拟程序的运行,不需要建立硬件平台就可以快速得到某些运行结果;硬件仿真是最准确的仿真方法,它必须建立硬件平台,通过PC机?硬件仿真器?用户目标系统进行系统调试。本文采用硬件仿真的方法,硬件平台即为插入P89V51RD2仿真头的实验板,设置硬件仿真的具体操作如下: 点击Project菜单中的Options for Target ‘Targer 1’,出现工程的配置窗口,点击Debug设置,选择Keil Monitor-51 Driver,具体参数设置如图所示:
仿真器参数的设置:建议波特率设置范围在300~38400之间;为避免程序中的中断和KEIL硬件仿真环境中的中断互相冲突,不选择“Stop Program Execution with Serial Interrupt”。仿真器参数的设置如图所示:
3、调试程序 按以上要求将系统设置好后,若程序编译链接没有错误,点击Debug菜单中的Start/Stop Debug Session就可以在实验板上进行硬件仿真了。仿真时可以选择单步跟踪、单步运行、运行到光标处或全速运行来观察仿真现象和运行结果。需要注意的是,当用户程序代码占用空间接近60K时,建议下载速度不要超过38400,速度太快有可能会导致下载过程中出现死机。 SoftICE模式下可以实现对单片机大部分资源的仿真,但需要注意自调试功能(softICE mode)功能有如下限制: 1) 不能支持看门狗WatchDog功能和软件复位功能,执行该操作将会导致仿真运行被终止,在KEIL μVision仿真界面的工具栏中可以看到Debug已经被终止,等待用户启动运行; 2) 用户只能使用0000H –FBFFH程序区,系统占用4K的Flash空间,用户的应用程序最多占用60K的空间,; 3) 若将断点设置在单或双字节结构指令处且后面紧跟的是一条跳转指令时,这种设置有可能导致程序运行不正常; 4) 仿真器参数的设置中,当选择“Stop Program Execution with Serial Interrupt”选项后,SoftICE将修改3个字节的中断向量(中断向量位置为0023H),为避免发生冲突,用户要确保程序不使用该地址。由于有一个握手信号在PC机和MCU之间执行,所以执行用户程序的速度将会变得缓慢。若要在全速运行环境下对程序进行仿真,建议不要选择该功能,否则可能会导致程序在运行过程中死机; 5) 定时器T2在SoftICE模式下用来产生PC机和仿真器之间通信的波特率,因此,该模式下不能对定时器T2进行仿真。执行全速运行指令“run”时,定时器2可作为定时器/计数器被使用:在run指令开始执行后,TR2(T2CON.2,定时器2启动位)将被置1开始计数,在“run”到达下一个断点时,该位被清0。 6) 单步跟踪时,所有的定时器/计数器都不能用来实时仿真,因为单步调试下执行完指令后就会停止,而定时器一旦被启动就开始运行不会停止;在全速模式下运行时可以仿真定时器0和定时器1; 7) 用户不能从主程序进入中断服务程序(ISR)。当需要跳过ISR时,用户可以在ISR之间设置断点,然后跳过这段代码。 使用P89V51RD2简易仿真器配合Keil μVision2进行仿真,给调试程序带来了极大的方便,它可以帮助用户尽快熟悉并了解P89V51RD2系列微控制器的资源,掌握其应用开发技术并提高编程效率。虽然SoftICE模式占用了系统一些资源,但是经过合理的安排,一般的程序还是可以接受的。在实际使用中,用户也可以根据自己的情况灵活地设计电路,制作适合自己使用的实验平台,本文只作为一个示例供用户参考。 |
用户554377 2008-7-10 13:00