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

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

点击数:7315 次   录入时间:03-04 11:49:50   整理:http://www.55dianzi.com   51单片机
2:把ISD51.A51 添加到你的uVision2项目中。
3:在main函数所在的模块中包含ISD51.H 。(使用 #include "ISD51.H")
4:检查ISD51.H 中的配置设定并根据你的目标硬件修改设置。缺省配置为:有256 Bytes的内部DATA/IDATA和8051兼容片上串口的标准8051器件。
5:在你的C主函数中为片上串口添加波特率初始化代码。你可以从以下示例代码中复制这段6:初始化代码:\C51\EXAMPLES\HELLO 。
7:在你的代码中添加适当的ISD51 启动函数 。
8:ISDInit: 初始化ISD51并启动用户程序。当连接到uVision2调试器时,用户程序执行被暂停。
9:ISDwait: 初始化ISD51并等待与uVision2连接。
10:ISDcheck: 检查uVision2调试器是否已经连接到8051;如果已经连接,ISD51中断被初始化。 ISDcheck 必须被定时调用,例如在一个典型的嵌入式程序中,将它放在main函数的主循环中。
11:创建用户程序并烧写到8051器件中。
12:将ISD51添加到用户程序中的示例在\C51\ISD51\EXAMPLES文件夹中。

ISD51 API 函数
ISD51提供了几个可以在用户程序中使用的函数。这些函数和宏定义在\C51\ISD51文件夹中的ISD51.H文件中。
void ISDinit (void)
这个函数初始化ISD51与uVision2调试器的通信。在调用这个函数后,你的用户程序以正常速度连续运行。
void ISDwait (void)
这个函数初始化ISD51与uVision2的通讯并且一直等待到与调试器通信成功。这个函数在调试器连接到8051前不会返回。
void ISDcheck (void)
这个函数检查uVision2调试器是不是尝试与8051连接,如果是,ISD51初始化与uVision2调试器的通信。 这个函数应该在你的8051用户程序中周期性调用。
void ISDbreak (void)
这个函数强制执行ISD51中断函数。这允许你添加硬代码断点(hard-code breakpoints,指断点写死在代码中)到你的用户程序中。在调用这个函数前,uVision调试器必须已经连接到你的硬件。
void ISDdISAble (void)
这个函数禁止ISD51的中断,这样你可以保证你的关键程序段不会被软件断点打断。调用这个函数后,不能使用单步执行和软件断点功能,一直到 ISDenable 被调用为止。
void ISDenable (void)
这个函数允许ISD51的中断。在调用ISDdisable 函数后,你必须调用ISDenable 来重新允许ISD51中断。
Configuring uVision2 for ISD51
当把ISD51添加到你的程序中,你可能需要配置uVision2调试器与8051目标系统的通信。

在你开始uVision2调试器前,运行目标系统上的8051程序。
在uVision2,选择Project - Options for Target - Debug:  Use: Keil ISD51 In-System Debugger.
在同一个对话框中,允许Load Application at Startup,这样uVision2调试器就可以调入你的8051程序的符号(标号、断点等)信息。
在同一个对话框中,禁止Go till main。你的用户程序将有8051目标系统的硬件复位启动。
在同一个对话框,打开ISD51 Driver Settings对话框设置以下选项:
COM Port Settings(PC串口设置)
Port(端口): 选择用于连接到8051目标系统的PC串口。
Baudrate(波特率): 与8051目标系统通信的波特率。
RTS Logical(RTS逻辑): PC串口的RTS线的信号电平(参见下面)。
DTS Logical(DTS逻辑): PC串口的DTS线的信号电平(参见下面)。
RTS 和DTS 设置
Active(有效): 在uVision2调试器通信期间一直为有效电平。
Inactive(无效): 在uVision2调试器通信期间一直为无效电平。
Reset Active(复位有效): 在uVision2调试器的复位命令后保持有效电平500毫秒。
Reset Inactive(复位无效): 在uVision2调试器的复位命令后保持无效电平500毫秒。
Cache Options(缓存设置)
ISD51可以使用数据缓存来提高屏幕更新速度。

禁止缓存可以在你暂停运行程序时观察DATA (包括SFR), IDATA, 或XDATA空间的实际数值。这样设置你可以确信你正在观察的就是I/O端口、定时器、基于存储器编址外设的实际数值。
允许缓存提供最高性能。
Code Breakpoint Options(代码断点选项)
这个设置设置ISD51使用软件断点还是硬件断点,或者同时使用两种断点。

如果你的8051器件不支持硬件断点,你必须选择software breakpoints only(只使用软件断点)。
如果你的8051器件支持硬件断点,当没有硬件断点可以使用时,你必须使用软件断点。
Miscellaneous Options(杂项设置)
Verify if Application in ROM is identical to current Project 这个选项允许uVision2 ISD51 调试器驱动在初始化ISD51通信时比较8051目标程序代码和当前项目代码是否相同。为了提高调试器连接到目标系统的时间,你可以禁止这个选项。

ISD51 Identification(ISD51识别)
当uVision2调试器连接到8051目标系统中正在运行的ISD51时,这个框显示ISD51的版本和其他信息。在调试中,你可以打开ISD51驱动设置对话框来查看这些信息。

Debugging with ISD51(使用ISD51调试)
当uVision2调试器配置好以后,你可以用菜单Debug - Start/Stop Debug Session来开始调试。 uVision2调试器通过ISD51软件来连接8051目标系统。

ISD51支持大部分的uVision2调试器功能。例如:你可以单步运行代码、设置断点、运行你的应用程序,变量可以通过调试器的标准功能来查看。

uVision2 Restrictions When Using IDS51(使用ISD51的限制)
当使用uVision调试器和ISD51时,你必须考虑以下几个限制:

不太可能使用调试--8051系统改变存储器的编址方式。因为这时的存储器编址依赖于硬件器件。
ISD51不支持性能分析(Performance Analyzer),调用堆栈(Call Stack)、代码覆盖(Code Coverage)、步出命令(Step Out command)。
可能不能使用PerioDIC Window Update(周期窗口刷新)选项。
Troubleshooting
如果uVision2调试器不能连接到ISD51硬件,你首先应该检查目标系统的串行通信是否正确配置。你可以通过以下的uVision2仿真功能来检查。

选择Project - Options for Target - Debug: Use Simulator。
使用菜单Debug - Start/Stop Debug Session开始仿真。
开始运行用户程序(Debug - Go).
使用串口对话框检查UART(Peripherals - Serial)的设置。如果你在项目属性里输入了正确的晶振速度(使用Project - Options for Target - Target - Xtal输入),这时显示的波特率就是实际你的串口波特率。这个波特率不一定和PC串口的波特率100%相同,当应该在相差2.5%之内。
检查串行通信。
打开串口通信窗口 (View - Serial Window).
在窗口内点击鼠标右键,选择Hex Mode。
在命令窗口内输入sin=0xA5。
uVision2仿真器应该会仿真ISD51中断并在串口通信窗口显示0xF7和6个以上十六进制数值。

如果一切配置都正确仍无法连接ISD51硬件,你的8051程序可以在初始化串口后调用这个函数。

/*
* Test Function: verify serial communication with HyperTerminal
*/

void TestSerial (void) {
  char c = 'A';

  TI = 1;
  while (1) {
    if (RI) {
      c = SBUF;
      RI = 0;
    }

  while (!TI);

  TI = 0;
  SBUF = c;
  }
}
这个函数不断从串行口输出一个字符 A  。如果你通过串行口传送一个字符给用户程序,那么用户程序将不断发送这个字符。你可以在PC机通过超级终端之类的软件来测试8051是不是成功发送字符 A ,当你改变这个字符是,是不是会发生相应的改变。

已知问题
这一节列出ISD51 In-System Debugger的已知问题.
TI MSC1210的硬件断点
TI MSC1210提供硬件断点寄存器,使用硬件断点后,可能会产生以下问题:
在断点后执行两条CPU指令以上,程序执行可能会停止。
在断点后立即执行单字节或双字节CPU指令可能会导致程序停止运行。
访问XDATA的断点不会有效,即使断点工作,也不可能区分是读访问还是写访问。 

上一页  [1] [2] 


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