|
利用SST89E52RD2/V52RD2内部两个8K空间实现16KB容量代换89C54
我们知道,SST公司提供的51单片机内部有两个存储块,而最新生产的89E52RD2和89V52RD2是两块各8KB的FLASH组成,具体参数如下:
* 8KB主存储块和8KB次存储块,共16KB的存储空间
* 1024Byte的内部RAM
* 3个16bit的定时器
*
一个全双工的串口
*
带内部的看门狗
*
带可编程计数器阵列(PCA)
* 4个8-bit的I/O(P0、P1、P2、P3)和1个4bit的I/O(P4),共36个I/O口
* 带SPI接口
*
掉电保护检测
从上面的规格指标可以看到,SST89E52RD2和SST89V52RD2是一个功能很强的MCU。由于SST89E52RD2和SST89V52RD2内部两块FLASH存储器都可以当程序区,所以我们利用这一特性把原来用89C54芯片的产品改成用52,从而减低产品的成本。把54的程序改为89E/V52RD2时要注意几点:
1、先把89E52RD2和89V52RD2的配置位SFCF[1:0]设为01,让两个8KB的程序块可见(请参考器件手册中关于程序空间结构的阐述)。此时低端块0的8K地址是0000H-1FFFH,高端块1的8K地址是E000H-FFFFH。
2、由于两个8KB的程序块分别在0000H~1FFFH和E000H~FFFFH,地址不是连续,所以需要把16KB的程序分成两个8KB,放到每个块中。用汇编语言写的话,用ORG
0000H和ORG E000H就可以实现程序定位,用C语言写的会比较麻烦点。
ORG 0000H
MAIN:
.......
LJMP DELAY
.......
ORG E000H
DELAY:
.......
END
3、89E52RD2和89V52RD2内部有768的扩展RAM,默认方式是访问内部扩展RAM,如果有外边扩展RAM的话,请注意要修改寄存器EXTRAM位。
这个软件的改动非常小,通过如此简单的方法就可以减低成本,何乐而不为呢? |