80C51系列单片机仿真器选购指南
测试程序:
ORG 0000H
LJMP TestStart
TestStart: MOV P0,#0FFH
TestLoop: MOV P0,#00H
NOP
MOV A,#0FFH
MOV DPTR,#0FFFFH
MOVX @DPTR,A
NOP
MOV P0,#00H
SJMP TestLoop
END
测试步骤
(1) 照您当前使用的仿真器要求测试上面的程序,仿真器不接任何用户设备。
(2) 单步运行完TestStart 的程序行,P0 的数值设置为0FFH。这时使用电压表测量一下P0的任意一个管脚(例如P0.0)的电压,记录为V1,V1 的数值一般小于当前的电源电压。然后使用一个2K 电阻,一端接仿真器提供的地,另一端接P0.0,使用电压表测量一下P0.0 的电压,记录为V2,V2的电压越接近与0 说明该仿真器P0 在I/O 口方式下的特性越好(接近于开漏)。如果V2 大于1伏说明P0 口的输入电阻在10K 以下,该仿真器P0 口在I/O 下性能较差。
(3) 在TestLoop 中连续全速运行,仍保持2K 电阻接在P0.0。使用示波器观察P0.0 引脚,可以看到占空比较小的正电平脉冲,该正电平脉冲是有P0 输出的低8 位地址和数据输出引起的,因为处于总线方式,P0 口的驱动能力应该较强。保持示波器的正常显示,然后将2K 电阻不断的接触/脱离P0.0 引脚,观察P0.0 脚脉冲信号幅度的变化。如果该信号在2K 电阻接入后幅度降低很大,例如1V 以上,说明该仿真器P0 口驱动能力不足,无法满足用户的正常的需要。
测试结论:HOOKS 仿真器要同时仿真I/O 口和总线模式而且保持良好的驱动特性是比较困难的,但是可以作到的。一般的HOOKS 仿真器一般不敢宣称同时仿真I/O 口和总线方式,但是用户需要注意即使宣称可以同时仿真I/O 和总线,用户也需要照上述的方法进行测试,防止厂家采取驱动折中的方法掩盖。根据作者的测试结果,国内所有的HOOKS 仿真器只有TKS 系列可以作到真正同时仿真I/O 口和总线方式,重要的是仍保持了良好的驱动特性。
是否占用用户资源
设计优良的HOOKS 仿真器不会占用任何用户资源,但是由于设计技术的差别,有一些采用HOOKS技术的仿真器不能达到这样的性能,一般会占用部分资源。占用资源将在使用中限制用户的使用,用户可能无法通过该仿真器实现正常程序的功能。该性能一般不需要测试,可以直接阅读仿真器的性能说明或向生产厂商或代理商询问。
ALE 信号的关闭/开启
HOOKS 技术的一个突出优点是能支持增强性能的仿真,而ALE 信号的关闭/开启是增强性能的一个典型范例。由于在HOOKS 技术中,依赖ALE 信号能大大简化信号的处理,因此一般采用HOOKS 技术的仿真器都不能关闭ALE 信号,否则会引起仿真时序的全面紊乱。该性能一般在仿真器的性能说明中没有详细说明,因此需要用户自己进行测试。
下面的测试程序以PHILIPS 的P89C52X2 仿真芯片为例。
测试程序:
ORG 0000H
LJMP TestStart
TestStart: MOV P2,#55H /* 先对P1 进行设置 */
TestLoop: ORL AUXR,#01H /* 关闭ALE 信号 */
NOP
MOV P2,#55H
NOP
ANL AUXR,#0FEH /* 开启ALE 信号 */
NOP
MOV P2,#0AAH
NOP
LJMP TestLoop /* 连续运行 */
END
测试步骤
(1) 照您当前使用的仿真器要求测试上面的程序。
(2) 进入TestLoop 后,连续单步运行,程序应该能照正确的程序流程运行,而且对P2 的操作能正确在P2 口反映出来。
(3) 在TestLoop 中连续全速运行,然后停止程序运行,观察当前程序位置是否是在TestLoop 内的有效位置,P2 是否是前一个对P2 操作的数值。
测试结论:仿真器如果不能支持ALE 的关闭将无法通过上面的测试程序。
双倍速时钟的动态/静态切换
PHILIPS、SST 等一些MCU 厂商在自己的增强型51 产品中增加了双倍速时钟的功能,使51 内核的速度提高了两倍。而且在有的型号中同时具有6/12Clock 时钟切换的功能,用户在使用中有了更多的灵活性。因此,这种变化要求HOOKS 仿真器必须同时满足6/12Clock 两种方式之一的仿真(静态切换),更高的要求则是能在用户程序运行中变换6/12Clock 模式(动态切换)。能同时满足动态/静态切换的仿真器难度很大,在国内除TKS 宣布掌握这一技术外,没有见到其它厂家有类似的报道。时钟的静态切换功能可以直接查阅仿真器的性能说明或向生产厂商/代理商询问,也可以用下面的程序进行测试:
评论