C51单片机免硬件单步调试

2019-04-15 19:26发布

ISD51仿真软件的使用

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


优点
         无需硬件电路需求;
         可以存在于最终产品中,ISD51免费使用;
         串口可继续用于通信,或printf()打印调试。
缺点
         使用软件断点程序运行速度相对较慢;
         若其他和ISD51系统中断优先级一样或更高,系统就不能再设置断点或单步执行,默认状态ISD51中断函数优先级为0;
         仅能ISD51中断和全局中断全部打开时ISD51才能生效,如此,也可以使ISD51在程序运行时停止工作。
支持功能
    基本硬件调试功能都能支持,如:变量监视,设置断点等。
使用方法
         1.将ISD51.A51和ISD51.H加入项目工程;
         2.初始化串口,配置合适的波特率,最后必须使能全局中断;
         3.选择合适的ISD51初始化函数;
                   ISDinit():初始化并运行用户程序,如果KEIL与单片机通信成功,程序就会立即终止运行
                   ISDwait():初始化ISD51并一直等待KEIL连接上
                   ISDcheck():周期性检查ISD51连接
         4.编译用户程序烧录到单片机内;
         5.在KEIL -> option for target -> DEBUG 设置选择ISD51 In-system Debugger,在setup里设置与ISD51串口初始化相对应的串口波特率。
    6.点击DEBUG按钮进入硬件调试模式。