在前面的文章中,我们都是直接用串口将程序烧写到单片机中运行,在这种开发方式下,如果程序有问题,很难找到问题所在,用过一些高端单片机的人可能知道,一般单片机是可以用调试器调试的,可以单步调试、设置断点等,对于查找程序的问题比较方便。51单片机比较低端,本身不支持在线调试,但是可以使用仿真芯片进行调试。本文我们就来介绍如何使用仿真芯片SST89E516RD。

        SST89E516RD芯片是51单片机的仿真芯片。仿真芯片可以实现计算机与开发板板之间的真正在线调试,可以在软件调试模式下进行单步的执行指令、可设置断点等。每执行一条指令都可看见实验板的运行状态,并且可随时查看各个变量的值,对初学者非常有帮助。如果不使用仿真芯片而直接使用板上单片机调试程序只能全速执行指令,通过实验板现象来重新修改程序,再次下载。

       在使用仿真芯片时,首先要把开发板上的单片机取下。将SST89E516RD仿真芯片取代原来单片机的位置。并用USB线将开发板与计算机连接起来。

       连接好硬件之后还要对Keil软件进行一定设置。设置步骤如下:

1、打开一个已有的工程。如下图所示。

51是X86架构吗_嵌入式

2、点击上图中橙色框中的按钮51是X86架构吗_mcu_02 ,打开如下窗口。或者点击“Project\Options for Target ‘Target 1’”,同样可以打开这个窗口。

51是X86架构吗_51是X86架构吗_03

3、将上图窗口中切换到“Debug”选项,并按照下图中橙色框的内容进行设置。

51是X86架构吗_mcu_04

4、设置好上图中的内容之后点击“Settings”按钮,出现如下图所示的窗口。

51是X86架构吗_嵌入式_05

5、在上图总设置串口号和波特率,串口号是开发板上的USB转串口芯片虚拟出来的串口。当开发板连接到电脑上之后,在设备管理器中可以看到该串口的串口号,用户需要根据自己的情况进行设置。波特率设置为38400,其它按照橙色框中的内容进行设置。设置好之后如下图所示。

51是X86架构吗_单片机_06

6、设置完成后点击“OK”,并在最初出现的窗口上点击“确定”,完成设置。设置好之后就可以进行仿真了。这时,将开发板的电源开关打开,点击如下图所示的仿真按钮。可以看到状态栏有蓝色进度条。

51是X86架构吗_仿真器_07

如果点击

51是X86架构吗_51是X86架构吗_08

之后出现如下图所示的窗口,说明通信存在异常。这时可以按一下开发板上的复位键,或者重启一下开发板的电源,然后点击下图中的“Try Again”按钮。如果多次尝试仍然不能成功,请检查USB线是否连接好,并检查串口号和波特率是否设置正确。

51是X86架构吗_mcu_09

下载成功后,Keil界面如下图所示。图中橙色框中显示的是CPU寄存器的值,和仿真器的版本。

51是X86架构吗_仿真器_10

7、这时就可以进行仿真了,仿真常用的几个按钮如下图所示。

51是X86架构吗_仿真器_11

这几个按钮的作用分别为:

51是X86架构吗_51是X86架构吗_12 —复位,将程序复位到主函数最开始处,准备重新运行程序。

51是X86架构吗_51是X86架构吗_12 —全速运行,运行程序时不停止。

51是X86架构吗_嵌入式_14 —停止全速运行,当程序处在全速运行状态时,点击该按钮,用来停止正在全速运行的程序。

51是X86架构吗_单片机_15 —进入子函数的内部。

51是X86架构吗_嵌入式_16 —单步执行代码,它不会进入子函数内部,可以直接跳过函数。

51是X86架构吗_仿真器_17 —跳出当前进入的函数,只有进入了子函数内部,该按钮才被激活。

51是X86架构吗_mcu_18 —程序直接运行到当前光标所在行。

    如果在点击51是X86架构吗_mcu_19 时,程序不能停止,说明下图中的橙色框中的复选框没有勾选。建议不要勾选这个复选框,因为有可能会影响仿真的准确性。用户可以通过按开发板上的复位按键来终止仿真,然后重新进入其它仿真过程。

51是X86架构吗_嵌入式_20