内部EEPROM
STC89C52RC,STC89LE52RC单片机内部可用的Data Flash(EEPROM)的地址如表所示:
每个扇区为512B,建议写程序时,将同一次修改的数据放在同一个扇区,方便修改。因为在执行擦除命令时,一次最少擦除一个扇区的数据,每次更新数据前都必须擦出原来的数据方可重新写入,不能在原来的位置直接更新数据。
内部扩展RAM的应用
RAM在程序运行过程中存放随机变量的数据空间。51单片机默认内部RAM只有128B;52单片机默认256B;STC89C52增加到512B ;
在Keil中编写程序,总程序中所有变量占用的字节数少于128B时候,并且储存模式为small时,对不定义的变量编译器将默认为0;一旦程序中变量总数量超过128B,必须对所有变量进行初始化,否则未被初始化的变量的默认值是不确定的。当变量总和超过128B时候,必须重设定存储器的存储模式。
存储器模式一共有三种,分别为small、large、compact模式。
1.small模式
在small模式中,所有默认变量均装入单片机内部的RAM中,例如:uchar a ; float b等变量时候;;该模式下的优点:访问速度快、缺点是空间有限,且对堆栈的分配比较少,难以把握,碰到递归调用时候需要小心。这种模式只适用于小程序。
2. compact模式
在compact模式中,所有默认变量均位于单片机的256B RAM中,和在small模式中使用关键字 pdata来定义数据变量的效果一样,如 uchar pdata a[100];在该模式下程序总变量空间不能超过256B。 对于只有128B的单片机来说,使用此模式定义超过128B变量数据时,将发生错误。其优点是觉small模式宽裕,速度较small慢,但是比large块,是一种中间状态;
3. large模式
在large模式中,所有默认变量可放在多达64KB的RAM中,包括内部RAM和外部RAM,这和使用关键子xdata 来定义变量的效果一样。该模式的优点是空间大,可存变量多;缺点是:访问速度慢,尤其对于两个以上字节变量访问速度来说更是如此。在large模式下编写程序,定义的变量总数千万不能超过对应单片机的内部最大RAM字节数,因为即使超过了,编译器也不会提示错误,但是程序必然会出错。