当前位置:首页>文章中心>常见问题>常见问题[仿真器]

常见问题[仿真器]

发布时间:2021-04-12 点击次数:3887
 

友情提示:
可通过"CTRL+F"查找相关内容
常见问题
  MCS-51
  MCS-196
  Microchip PIC
   
MCS-51常见问题(POD8X5XP、POD520、POD552、POD592、PODLPC76X、PODH8X5X)
 
一、软件方面(语言、目标文件)
1. 源程序的编译

1) 汇编语言

a) 伟福汇编
问:为什么标准的51汇编程序在伟福汇编器编译无法通过?
答:总的来说伟福汇编器与Intel汇编器在书写格式上除了大部分相同外有一些不同,例如包含头文件伪指令include指令,伟福格式为:incude“文件名”,Intel格式为:$inlcude(文件名),有关伟福汇编器的更详细的说明请参见“伟福汇编器使用帮助”。

问:在使用伟福汇编器时,提示“重复定义”错误,而程序中只定义了一次。
答:使用伟福汇编器,可以使用伟福预定义符,当用户变量全部由用户定义的时候,不能使用伟福预定义符,否则会出现“重复定义”错误。有关伟福预定义符的详细列表的产生,请参见“伟福汇编器使用帮助”。
b) Intel汇编
问:在仿真Winbond77E58等芯片时,为什么使用DPS、DPTR1等寄存器的时候,编译出错?
答:标准的Intel汇编器只适用于标准资源的芯片,所以对于类似于上述增强型芯片,如果还需要使用Intel汇编器,增加的寄存器需要用户在程序中自己定义。

2) C语言

问:在Keil C51环境下编译通过的源程序,在伟福环境下编译通不过。
答:请检查keil环境下Option for Target "???"\C51\Compiler Control String 和Option for Target "???"\BL51 Locate\Linker Control String 中的设置是否分别和伟福环境下"C语言命令行"和"link命令行"相同。

问:在伟福环境下如何实现汇编和C的混合程序
答:请参见伟福网站的例程

3) PL/M语言

问:暂无
答:暂无

2. OMF文件
问:在伟福环境下调入OMF文件,提示“OMF文件格式错”
答:在最新以及之前的版本中,在调入OMF文件进行调试的时候,要求该OMF文件和当前项目的所在路径相同,并且文件名与当前项目名一致,调入成功后,会自动保存目标文件(如果设置产生目标文件),否则会报错。

问:OMF文件已经正确调入,但是为什么单步运行就变成为全速运行?
答:由于OMF文件不包含调试信息,所以调入的OMF文件不能单步调试,只能全速运行。
3. 目标文件
问:仿真正常,烧片不能正常工作。
答:在目标文件选项中,一般情况下建议使用缺省地址方式,如果不使用缺省地址,有可能使得目标代码保存不完整等, 造成仿真通过,烧片不正常的现象。

 

4. 软件模拟
问:调试的时候,为什么不能在源程序上进行?
答:打开仿真器设置\语言,在ASM、C、PL/M命令行,查看默认设置的控制项是否被删除。

问:启动软件的时候,出现错误窗口,确定无效。
答:Explorer.DSK文件破坏会出现类似错误,删除Explorer.DSK即可。

 

 

二、硬件方面(仿真器、通信设置)

1.硬件仿真

1) 常规问题

问:仿真875x时,为什么不能像仿真803x那样设置仿真头,将程序空间置到用户板?
答:仿真875x时,实际上是仿真cpu内部程序空间,因此程序空间不能在外部,不能在用户板上;如果用户需要仿真片内、片外均有程序空间的用户板,那么就相当于仿真总线方式(P0、P2),可以选择cpu为8031或8032。

问: 如何选择G6系列仿真器的51仿真头?
答: 使用G6系列仿真器来仿真8951CPU时,应根据P0口和P2口的使用方法来选择仿真头, 如果用户要求P0口和P2口作为总线使用,应选用8051仿真头:如果用户要求P0口和 P2口作为I/O使用,应选择8752仿真头。

2) 端口

问:向某一个端口送一个值后,端口上没有出现相应的信号。
答:如果仿真器已经连上用户板,那么通常是外围电路强行的将某一个端口拉为低电平或高电平,从而出现寄存器的值不能正确输出到管脚,需要检查用户板相应端口的外围电路

问:使用POD76X(P)仿真P87LPC767的时候,设置使用内部RC振荡方式后,为什么P2口不能正常输出。
答:当使用内部RC振荡方式的时候,应该将仿真头上的晶振跳线跳到1号位置的对面位置,使仿真头芯片的CLKIN和CLKOUT与CPU座子的引脚相连;如果使用默认的出厂设置,仿真头芯片的CLKIN和CLKOUT是与仿真头晶振相连,与CPU座子的引脚是不连的,所以无法当作输出口。

问:用E2000/L+PODLPC76X仿真LPC764,在调试总线时,为什么P1.3(SDA,PIN9)引脚容易烧怀,而P1.2(SCL,PIN10)正常?
答:在I2C模式下,P1.3同时作为输入和输出脚,需要置相应的寄存器来决定输入模式还是输出模式,当SDA引脚向I2C器件发送完数据,需要在一定的延时后将其置为输入模式,以等待接收应答信号;如果没有及时置成输入模式,当SDA的最后一位信号与应答信号相反,而此时正好处于单步调试状态,各种状态将被保持,很容易将端口烧坏。所以,在单步调试I2C的时候,可以在收到应答信号后面设置断点,用全速运行执行到断点。

3) 串行口

问:使用mov指令向SBUF发送数据后,为什么在CPU窗口不能看到相应的值?
答:SBUF(Address=99H)在物理上分成接收寄存器和发送寄存器,两个是独立的,在CPU窗口或者使用指令读SBUF的时候,读的是SBUF的接收寄存器;向SBUF写入一个值的时候,写入的是发送寄存器;所以在CPU窗口是不能看到写入的值的。

问:向SBUF发送数据后,信号没有正确发送到TxD。
答:这通常是用户程序不对引起的;请检查波特率定时器是否开启及其工作方式、串行口工作方式以及设定的波特率。

问:在调试多机串行通信和单片机与计算机通信的时候,无法接收到其他单片机发送过来的串行数据。
答:请检查接收波特率的设置和晶振,是否符合RxD上信号的波特率,一般情况下,波特率误差超过3%就会出现通信错误或失败。

6) 总线

问:用户板总线上扩展了一块8255,I/O操作不正常。
答:在正常复位后,写入控制字后,即能对8255端口进行正常的写操作,因此,应该着重查找该芯片的复位电路,确保芯片可靠复位。

问:用户板扩展了一块8279,仿真不正常。
答:在仿真的时候,CPU的复位是有仿真器控制的,因此在仿真的时候8279经常容易产生不能正常复位导致无法正常工作。
2. 功能使用

 

 

 

问:使用逻辑分析仪无法观察外部信号的波形。
答:当使用逻辑分析仪采集外部波形的时候,要求在相应的J3或J4上有相对于仿真器GND的数字信号,并且将逻辑分析仪的触发设置的J3或J4选上,否则默认采集仿真器内部的信号(见图)。



问:使用波形发生器产生自定义波形,用示波器测量没有信号输出。
答:首先检查触发设置的基准频率是否太高,因为如果扫描频率太高,在固定的深度下,波形长度将会短,因此用户需要根据用户需要产生的波形的频率来选择合适的基准频率,并选择合适的波形长度;然后检查输出波形的口线是否正确(J3.0~J3.7)。

 

三、仿真-烧片-成品

问:在仿真通过的程序,烧片工作不正常。
答:仿真的时候以下有可能与直接插CPU的时候不同:EA引脚、RST引脚、CPU资源、晶振电路(用户可以设置成用户晶振)。在出现以上错误的时候,用户首先应该检查对于POD552、POD592、PODH8X5X,因为用户在使用该三种仿真头的时候,可以直接将仿真头的CPU替换成最终将使用的CPU,所以一般不存在资源差异;但是对于POD8X5X(P)、POD76X(P)、POD520,这三种仿真头,它们是用专用仿真芯片实现的,资源不能改变,而且为了能仿真多种CPU,将资源尽可能最大化,例如POD8X5X(P)的资源是52的资源,POD76X是769的资源,POD520是520和77E58的资源,因此仿真通过,烧片有可能会因为资源不同而不能正常工作。所以用户在仿真的时候,不能使用最终CPU没有的资源,尽管仿真头的CPU有这些资源。

问:使用AT89C51烧片时,使用3级加密完全正常,而用1、2 级加密却不能用。
答:参考AT89C51 的使用手册可以发现AT89C51的31脚(EA)内接有开漏上拉电阻,在用编程器对单片机进行3级加密之后,EA脚将自动被自动拉到Vcc,启用内部ROM,因此可以判断用户板的31脚没有拉到Vcc,在1、 2 级加密时EA脚内部不会被自动拉到Vcc,单片机无法访问内部的4K程序区。

 

问:在有的P87C51单片机的系统中,出现上电复位不可靠的现象。
答:PHILIPS 单片机出现复位不可靠的问题主要是PHILIPS 单片机内部的电阻太少造成复位速度非常快而外围器件复位动作速度太慢以至于单片机复位完成在先接口的芯片复位在后造成复位不同步二者配接不上从而造成单片机死机或处于不稳定的状态解决办法在单片机初始化之前加一段5-10ms 的延时程序或者还要适当再长一些的延时或者改变单片机的复位电路使单片机的复位速度与外围器件同步经过实战改进之后证明P87C51 单片机使用比其他厂商的单片机更加可靠大多数产品使用的经验表明PHILIPS单片机是可靠性更强的单片机只要从PHILIPS 单片机本身的特性出发设计软硬件是可靠性设计的根本所在

 
 
常见问题
  MCS-51
  MCS-196
  Microchip PIC
   
   
常见问题(POD196KC、POD196MC)
问:新建项目,加入模块,初始化仿真器无法通过,而使用SAMPLE可以通过。
答:检查仿真头设置的等待控制是否正确,在仿真的时候,等待控制应该设置成1、2、3个等待,而不能设置成无等待。

问:启动看门狗后,单步跟踪后,回到起始地址。

答:看门狗开启后,内部定时器一直在工作,而用户程序一旦停止,其时间足以引起看门狗复位,所以,在单步调试程序的时候,应该将看门狗关闭,当用户程序基本调试完毕后,可以打开看门狗,全速运行程序进行调试。

问:为什么在操作外部总线设备的时候,WR或RD没有信号?
答:仿真的时候,用户板的RD和WR引脚和仿真头CPU的RD和WR引脚是不直接连的,只有在访问非仿真器空间(即用户空间)的时候,才输出有效RD或WR信号。所以需要在仿真头设置中的空间设置的所有非程序空间置到外部,而将所有的程序空间置到仿真器上。

问:为什么在仿真用户板的时候会出现“堆栈读/写错:psw或pc值不正确”的错误信息窗口?

答:通常这种现象是由于用户指定的堆栈无效引起的。可以检查程序指定的堆栈区域是否存在或者有效,如果在外部RAM,需要特别检查用户RAM的读写是否正常,芯片是否损坏。

问:用户程序仿真完全通过,烧片不工作,将所有空间置到用户板仿真,也不能正常工作,但是使用仿真头晶振一切正常,用户板晶振20MHZ。
答:通常这是由于用户板ROM的速度不够引起的,可以更换一块速度可以足够快(25ns)的ROM重新烧录。

问:用户程序仿真完全通过,将所有空间置到用户板仿真也正常,烧片不工作。
答:检查晶振电路是否起振,复位是否正常,检查READY、RESET、NMI、EA引脚是否正常。

问:仿真80c196MC时,仿真通过,烧片不工作,测量CPU没有输出ALE,但是CPU已经起振。
答:在80c196MC中有一个P5口,它有标准I/O方式和特殊功能两种配置方式。一般情况下,用户会将P5口配置为特殊功能方式,用它作为ALE、INST、WR、RD、BHE、READY、BUSWIDTH等引脚。而在仿真的时候,仿真器已经将其设置为特殊功能模式,因此会出现仿真正常,烧片不正常的现象。所以需要在程序中应置相应的寄存器,将P5口置成相应的模式。
 
 
常见问题
  MCS-51
  MCS-196
  Microchip PIC
   
   
PIC常见问题(PODPIC5X、PODPIC67x)
问:使用PODPIC5X仿真PIC508的时候,初始化能通过,但是不能仿真。
答:首先检查仿真头设置,如果使用仿真头晶振(4MHZ),可以将频率选择选为HS高频或XT中频,不能选为内部RC方式。(PODPIC77也存在同样的问题)

问:使用PODPIC5X仿真PIC508的时候,仿真通过,烧片不工作。
答:通常是由于控制字没有正确烧录引起的;首先需要检查烧录时的控制字是否跟仿真时一样,如果仿真时使用HS或者XT,而用户板使用内部RC,需要在烧录的时候指定为内部RC。

问:使用汇编语言仿真PIC508时,编译时没有反映,软件死机。
答:请检查仿真器设置中的asm命令行,是否与默认设置相同;另外,请检查编译器在上次编译的时候是否非法退出,所以可以重新启动计算机。

问:使用PODPIC6x7x仿真PIC711,为什么A/D部分无法正常仿真。

答:由于PIC16c711(还有16c710,16c71)的寄存器地址与PIC72~77的寄存器地址排列不同,特别是用户寄存器的起始地址和AD寄存器地址不同,在16c711中ADCON的地址是08h和88h,用户寄存器的起始地址是0CH,而在16c72中分别AD寄存器地址是1FH和9FH,用户寄存器起始地址是20H。
在线客服
  • 销售热线
    138_1589_8603