⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simulator.txt

📁 通过使用该程序,可以检测所购买的仿真器的仿真性能
💻 TXT
字号:
1.单步性能的测试
     测试说明:单步是仿真器设计中比较难实现的功能。照通常的理解,用户每执行一个单步应该准确实现理想运行的单步性能。例如,运行一个机器周期的指令,内部的所有时序应该都动作一个机器周 期而不能出现不动作或动作过度的现象。不过很遗憾的看到国内的仿真器多数不能达到这个指标。
     测试程序:
                ORG        0000H
                SETB       TR0                        /*  打开定时器0 */
     TestStart:
                NOP                                   /* 定时器0 运行1个机器周期, TL0 加1 */
                MOV        A,#0FFH                    /* 定时器0 运行1个机器周期, TL0 加1 */
                MUL        AB                         /* 定时器0 运行4 个机器周期, TL0 加4 */
                LJMP       TestStart                  /* 定时器0 运行2 个机器周期, TL0 加2 */
                END

     测试步骤
      (1)  照您当前使用的仿真器要求测试上面的程序;
      (2)  在运行前打开TL0 的显示,以便单步运行后能观察TL0 的变化;
      (3)  使用当前仿真器环境提供的单步功能开始单步运行;
      (4)  单步运行后检查TL0 变化的数值是否与指令的周期数相同。

     测试结论:仿真器如果没有照严格正规的设计,程序的单步运行性能将不准确,一般会出现实际运行时间变长的现象,这在时间要求较高的单步运行将不能仿真程序的真正运行。
2.中断性能的测试
     测试说明:中断是一种非正常的程序跳转,单步仿真有一定的难度,尤其在低档仿真器中。在当前 采用Bondout 技术制作的仿真器中一般可以做到正确仿真,但是仍有一些仿真器不能正确单步仿真中断。
     测试程序:
                ORG       0000H
                LJMP      TestStart
                ORG        000BH                     /*  定时器0 的中断服务程序 */
                RETI
    TestStart:
                SETB      EA                         /* 开放全局中断允许 */
                SETB      ET0                        /* 开放T0 中断允许 */
    TestLoop:
                SETB      TF0                        /*  设置T0 的中断标志 */
                INC       A                          /* A 数值加一,以便观察程序持续运行 */
                LJMP      TestLoop                   /* 连续运行 */
                END

     测试步骤
     (1)  照您当前使用的仿真器要求测试上面的程序。
     (2)  每次SETB TF0 后程序将进入T0 的中断服务程序,执行完毕后返回主程序继续运行。
     (3)   主程序能在TestLoop 中连续运行,因此A 能连续加一,但是每循环一次就进入一次中断。
     测试结论:仿真器如果没有照严格正规设计,程序的中断性能将不准确。可能出现程序不能跳转到中断服务程序,或没有返回到正确的主程序,或A 不能每次循环连续的加1。
3.连续中断性能的测试
    测试说明:在80C51 的中断系统中,串口中断比较特殊。进入串口中断服务程序后中断标志TI 或RI不会自动清除,如果用户程序不对TI 或RI进行清除操作则可能会出现连续进入中断服务程序的情况。根据80C51 的中断处理,在退出中断后必须执行完一条指令后才能重新进入中断服务程序,因此即使连续中断的情况下主程序也能得到连续执行。
    测试程序:
                ORG       0000H
                LJMP      TestStart
                ORG        0023H                     /*  定时器0 的中断服务程序 */
                RETI
    TestStart:
                SETB      EA                         /* 开放全局中断允许 */
                SETB      ES                         /* 开放串口中断允许 */
                SETB      TI
TestLoop:
                NOP
                NOP
                INC        A                         /* A 数值加一,以便观察程序持续运行 */
                LJMP      TestLoop                   /* 连续运行 */
                END
     测试步骤
     (1)   照您当前使用的仿真器要求测试上面的程序。
     (2)   进入TestLoop 后,每次单步运行完一条程序都会进入串口中断,退出后继续运行一条下面的程序,然后又进入中断服务程序,A 的数值可以得到递增。
     (3)   主程序能在TestLoop 中连续运行,因此A 能连续加一,但是每循环一次就进入一次中断。
     测试结论:仿真器如果没有照严格正规设计,程序连续运行中断程序性能将不准确。可能出现程序不能跳转到中断服务程序,或没有返回到正确的主程序,或A 不能每次循环连续的加1。
     测试小结
     上述的几个测试程序对仿真器的性能要求很高,如果仿真器通过测试说明被测试的仿真器仿真性能指标较高;如果仿真器没有通过测试只能判断仿真器性能不是最好,具体的综合性能要有待其它检验。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -