单片机开发,离不开仿真器。在将终端机、仿真器和用户样机的联调过程中,有时遇到一些难以解决的问题,这些问题多数是用户用机的故障。但是仿真器本身有时也出故障,因此我们必须首先找出仿真器本身故障之所在,才能有的放矢,把精力和时间放在用户板上。现介绍几种仿真器常见故障的自我检查办法,尽管作者是针对SICE—Ⅲ而言,对其它型号的仿真器也可作参考。
1.首先检查仿真器仿真接口在运行读和写指令时,有无RD-和WR-信号输出。大家知道,若无RD-读信号输出,就意味着用户板上的一些信息不能输入到仿真器;无WR-信号,肯定导致仿真器不能向用户输送信息,因此,首先对这两个信号进行检查。检查办法很简单,执行下列程序后,用示波器在仿真器接口处测试RD-读信号及WR-写信号,若有,即表示正常;若没有,则可能是仿真器的WR-及RD-驱动电路有问题,也可能是仿真器板上的8031本身就没有这两个信号输出。程序如下:
1 ORG 0200H
2 LOP0:MOV DPTR,#0DFFFH;输入口地址
3 MOVX A,@DPTR;读
4 MOVX A,@DPTR;读
5 MOV DPTR,#0EFFFH;输出口地址
6 MOV A,#00H
7 MOVX @DPTR,A;写
8 MOVX @DPTR,A;写
9 SJMP LOP0
该程序中的句2和句5中的地址可据实际情况而适当改动。
2.检查地址锁存控制信号ALE的有无。此信号无论机器在运行程序或不运行程序时都可由示波器在仿真器的仿真接口上看到,若无此信号,必引起用户板异常。无此信号的原因一般是仿真器的ALE驱动电路,或仿真器上的8031电路有故障。另一种可能是该信号引脚和其它信号相碰,导致ALE信号异常。正常的ALE信号应为1:2占空比的方波,可参看有关参考书。但应注意在使用ALE作时钟输出时,在CPU执行访问存储器指令(MOVX)时,会丢失一个周期。
3.检查仿真器有无片外取指信号PSEN-,此信号平时用示波器在仿真接口处测量是没有的,但仿真器的8031上就有此信号。当仿真器工作于用户程序存储器工作方式时,用示波器在仿真器的仿真接口的对应脚,可看到该信号,此信号正常时为占空比1:1的方波,宽度由仿真器8031单片机时钟决定。实际测量时,顶部略有毛刺。若有故障,检查和解决办法与对待ALE信号的情况相似。
4.检查仿真器数据输出功能。若仿真器的数据输出驱动器的某位异常,必导致用户板不能正确执行。检查此功能的办法较简单,只需另搞一块用户试验板,其上接一块DAC0832及一块F007运放,另加几个小元件,编一段锯齿波产生程序让仿真器去执行。此时用示波器观察运放输出的锯齿波台阶是否均匀。若均匀,说明正常;若不均匀,应检查仿真器的输出电路。仿真器、DAC0832及运放的连接见图1,产生锯齿波的程序如下:
1 ORG 0400H
2 LOP1:MOV B,#0FFH
3 LOP2:MOV DPTR,#07FFFH;DACQ832地址
4 MOV A,B
5 MOVX @ DPTR,A
6 DJNE B,LOP2
7 SJMP LOP1

5.检查仿真器的输入功能:若仿真器输入口电路的某一位有故障,必导致用户板的外界信息不能正确反应出来,故必对此检查。检查办法并不复杂,只需在用户试验板上连接如图2所示的电路。所需元件为一块LS373。8只单刀双掷开关,及一些导线,另外再编几句输入程序,使输入的开关信息量存入仿真器内部RAM单元30H中,执行完程序后,看30H中内容和开关量是否一致,若一致,则说明仿真器输入功能正常,不一致,说明不正常,一般情况是由输入电路所致,更换之即可。程序如下:
1 ORG 0500H
2 MOV DPTR,#0DFFFH;LS373口地址
3 MOVX A,@ DPTR;读入
4 MOV 30H,A;开关量放30H中
5 HERE:SJMP HERE

开关量可分别置为FFH、F0H、0FH及00H。(朱明荣)