最近因为NXP公司P89V51RD2芯片停产,我们部分产品中使用的MCU准备用其他类型的单片机替换。产品中最先使用的新塘公司的W78e516B,后来换成P89V51RD2,现在想再替换回W78E516D。但程序运行一直出现故障。
P89V51RD2程序运行:程序code大小约110K左右,分两部分;一部分64K左右,运行在单片内部ROM;一部分54K,保存在W27E512。通过单片机P1.5口控制EA脚进行片内外rom切换,程序运行正常;
换成W78e516B后:
1、开机运行后,程序code在ROM运行,EA脚电平为高;功能切换至外部ROM,无反应,而EA已经拉低,但程序还在内部rom跑,这点很让人郁闷(初步分析为W78e516B上电后EA脚电平状态被锁存);
2、开机时,将EA脚人为拉低,W78e516B的程序只运行外部rom的程序,无法切换至内部rom(基本确定为EA脚的状态电平锁存);
我们开始怀疑两种单片机的RAM地址分配;堆栈设置的特点,发现两种单片并没有什么大的不同,但P89V51RD2一直用着没有问题。后来怀疑为下载器(周立功公司的smarpro 5000 plus)的软件加密的设置不对。将正常运行的P89V51RD2单片机经行程序加密如图-1,也出现W78e516D同样的情况。便用同样的方法,设置W78e516单片,如图二,仍然是无法跳转至外部ROM。头大!W78e516D的手册中对芯片加密位设置如图三:
图一:
图二:
图三:
可是程序如何不能实现内外部ROM的跳转?求教,高人!
|