一、存储器结构
51单片机存储器采用的是哈佛结构,即是程序存储器空间和数据存储器空间分开,程序存储器和数据存储器各自有自己的寻址方式、寻址空间和控制系统。
51存储器可以分为
- 程序存储器ROM:用于存放程序和表格之类的固定常识。C51编程中用code关键词声明。
- 内部数据存储器RAM:51子系列有128字节RAM,52子系列有256字节RAM
- 特殊功能寄存器SFR:80H-FFH字节地址的RAM
- 位地址空间:片内RAM0x20-0x2f空间,本空间允许按位或者字节寻址。可用bdata进行声明。
- 外部数据寄存器RAM:片外的RAM,最大寻址空间2^16即是64K大RAM。Pdata用于声明片外第一页RAM空间为0-255;xdata用于声明外部RAM空间为0-65535.
内部可直接寻址RAM结构图
此外data用于片内直接寻址RAM空间0-127;idata用于片内间接寻址RAM空间0-255。
二、C51增加的修饰符说明
C51变量声明方式:
存储类说明符 类型说明符 修饰符 标识符;
例如:static unsigned char idata temp;
存储类说明符:包括auto、extern、static、register;
符号说明符:包括unsigned char、char、unsigned int、int、long、unsigned long、float、bit、sfr、sft16、sbit;
修饰符:包括data、idata、pdata、xdata、bdata、code;
此外,在编译C51源程序时可选用三种存储模式之一:即小模式(small)、紧凑模式(compact)、大模式(large)。三种模式的ROM空间相同,而三种模式的默认RAM空间:对small模式来说,就是片上RAM的所用空间data和idata;对compact模式来说,是片外pdata空间;large模式,为片外xdata空间;
以上就是对这几天对8051的重新认识,当然不是很全面。在此之前,一直对其存储结构不是太明了。现在多少有一些许了解了,很是兴奋。另外,现在市场上的51内核芯片与之前传统的还是有些许不同的,具体不同之处就需要认真读读供应商的文档资料了。举个例子来说,STC的89c51系列单片机,其ROM空间可以根据信号来判别,其RAM最小的型号89C51,就有256字节内部RAM和扩展的256字节外部RAM,其内部还有4K的EEPROM。