您当前的位置:五五电子网电子知识单片机-工控设备51单片机KEIL中的ISD51仿真软件详细使用说明 正文
KEIL中的ISD51仿真软件详细使用说明

KEIL中的ISD51仿真软件详细使用说明

点击数:7315 次   录入时间:03-04 11:49:50   整理:http://www.55dianzi.com   51单片机

ISD51仿真软件的使用

Keil公司推出的Keil7.0以上的版本,均带有一个ISD51(In System Debugger)的工具软件,它可以让使用者在无硬件仿真器的情况下,借用目标硬件的串口(UART),完成单步、断点的仿真。这对许多开发者,尤其是初学者来说无疑是一个最节省开发成本的方法。
一、ISD51的介绍
   ISD51文件位于\Keil\C51\ISD51目录下,由两个文件组成:ISD51.A51,ISD51.H。其中还有一个ISD51.HTMML说明文件,说明ISD51的使用。
   ISD51。H是一个头文件,内部定义了许多变量、宏等功能子程序,运行函数全部在ISD51。A51中。如果要使用ISD功能,必须要将上述两个文件蕴涵进用户程序中!同时在主程序中还要不断地调用ISD51的子程序ISDcheck(),才能完成仿真!
   ISD51有近600个字节,连接进用户程序后,加大了用户程序的长度,也许会造成本来可以放入89C51的程序而不得不放入89C52。为此必须在用户程序中进行必要的条件编译,调试时选用89C52,而运行时不把ISD51编译进来,这样就可解决问题。 
二、ISD51的使用
  ISD51仿真是借用串口(UART)与Keil通讯完成仿真的。因此用户的UART口被禁止,同时还需要添加一个RS232电平转换接口(见图1)。采用3线式完成通讯!

图表 1
例程见下:
#include <reg51.h>
#include "Isd51.h"
#define DEBUG 1 //调试时打开
void InitUart(char bps); //UART初始化
void main (void)//主程序
{
        #if DEBUG
                InitUart(4); //波特率=9600 @ 11。0592MHz
        #endif
        while(1)
        {
                #if DEBUG
                        ISDcheck();不断通讯
                #endif

/*  用户程序
        。。。。。。。
*/
        }
}
//串口初始化程序
void InitUart(char bps){
SCON  = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr      */
            TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload        */
        if (bps==1) TH1=0xE8;  //BPS=1200
                if (bps==2) TH1=0xF4 ;//BPS=2400
                        if (bps==3)  TH1=0xFA;//BPS=4800
                                if (bps==4)  TH1 =0xFD;//BPS=9600
                                        if (bps==5) {
PCON|=Ox80;//BPS=19。2K
TH1 =0xFd;
}
            TL1=TH1;
TR1   = 1;    /* TR1:  timer 1 run                          */
            TI    = 1;    /* TI:   set TI to send first char of UART    */
}

  编程时必须将ISD51。H,ISD51。A51考入目标目录下。void Inituart(char bps)是通讯波特率设置函数,程序开始必须调用,可根据目标板的实际情况改变。程序中定义了DEBUG条件编译开关,通过它控制ISD51是否被编译进用户程序。
三、调试步骤
1:用Keil软件编译用户程序生成HEX文件烧入MCU,连接好硬件。
2:在Keil开发软件中对用户项目进行如下设置:(必须!)
  打开“project”->"OPtions for target XXXX"菜单出现:

图表 2
  选择好工作频率。

3:选择“DEBUG”出现:

图表 3
   选择Keil ISD51 In-System Debugger。
4:选择“Settings”出现:

图表 4
根据目标板的参数,设置通讯口,波特率。
5:退出设置菜单,启动“DEBUG”菜单,便可以开始ISD51仿真!
四、总结
    ISD51软件仿真为用户提供了一种廉价的开发方法与目前流行的JTAG仿真类似。但毕竟是通过软件完成各项功能的,因此存在占用资源多、速度慢等缺点。

五、ISD51的中文注释:
ISD51综述
ISD51工作原理
将ISD51功能添加到用户程序
ISD51 API 函数
配置uVision2 和 ISD51
使用ISD51调试
错误排除
已知问题
TechnICal Support
Contact Details
ISD51 In-System Debugger 综述
ISD51 (In-System Debugger 在系统调试) 为8051用户程度提供了一种新的调试监测技术。 ISD51是可配置的函数库,你可以连接到你的用户程序,通过8051片上串口来实现程序测试。
ISD51的软件和硬件需求都很小。它可以运行在片外或片内代码空间,并且不需要特殊的硬件支持,例如: von Neumann-wired memory。
ISD51可以工作在象Philps LPC这样的非常小的8051器件上,同时也可以工作在一个访问完全CODE和XDATA空间的完整8051系统上。
特性
使用单步运行和多个软件断点来控制程序的运行。
查看、修改CPU 寄存器和存储器内容。
访问特殊功能寄存器(SFRs)。
支持硬件断点寄存器(在某些8051派生器件中存在这些寄存器)。
当没有设置软件断点时,全速执行8051用户程序。硬件断点不影响执行速度。
资源需求
一个8051兼容的片上串口(UART)。
使用8051指令集的8051兼容器件。
500-700 bytes的程序空间—取决于SFRs的数量。
6 bytes的堆栈空间。
1 byte IDATA RAM.
每定一个一个软件断点增加2 bytes IDATA RAM。
限制
目前版本的ISD51有以下限制:
不支持8051扩展指令集。这表明ISD51不能工作在Philips的80C51MX或Dallas的Contigious模式下。
不支持Code banking。
优点
不需要对你的硬件系统作特别的修改。
ISD51可以在任何标准8051系列器件上。ISD51不能工作在使用扩展指令集的Philips的80C51MX或Dallas的Contigious模式下。
程序代码可以存储在片内Flash/EPROM/ROM或片外EPROM。
不需要von Neumann memory、XDATA空间、寄存器、位可寻址空间。
ISD51可以使用在用户的最终产品上。 ISD51 firmware是不需要特许权使用费的。
ISD51 protects your SOFtware investment since it may only be used when the original source code is available.
工作原理
ISD51在你的用户程序中为8051 UART添加一个串口中断函数(ISD51中断)。 当ISD51连接到uVision2调试器时,8051进入ISD51中断函数。当用户程序停止运行时,8051程序只运行ISD51中断函数。 当uVision2调试器发出Go命令,8051离开ISD51中断函数并执行用户程序。
如果没有设置断点或所有断点都是硬件断点,8051以全速执行用户程序。如果设置了软件断点,8051在每个CPU指令后进入ISD51中断函数。ISD51中断函数检查8051程序是否已经到达一个断点,如果已经到达一个断点,ISD51开始和uVision2调试器通讯。因此在使用 软件断点后,8051程序以比较慢的速度执行(大概为100倍)。
当其他中断的优先级被设置和ISD51一样或更高时,这个中断函数是不能被设置断点或单步执行的。ISD51中断函数缺省使用中断优先级0.
uVision2调试器发送一个0xA5字符给ISD51中断函数来停止用户程序并开始和调试器通信。基于这个原因,当调用uVison2调试器时,用户程序必须被开始。

ISD51 Side Effects
只有在ISD51中断和中断系统被允许时ISD51才工作。你可以在运行关键程序段的时候关闭ISD51操作。
允许在ROM设置断点。如果设置了软件断点,8051程序在ISD51中断函数控制下以慢大概100倍的速度运行。
当其他中断的优先级被设置和ISD51一样或更高时,这个中断函数是不能被设置断点或单步执行的。
    当ISD51中断被允许后,可以通过uVision2调试器的Stop按钮来停止8051程序的执行。
将ISD51集成在用户程序中
将ISD51功能加入到你的应用中,以下几步是必须的:
1:把\C51\ISD51目录下的ISD51.A51、ISD51.H复制到你的项目文件夹中。

[1] [2]  下一页


本文关键字:仿真软件  51单片机单片机-工控设备 - 51单片机