51 的存储器结构 笼统来说单片机片内存储器分为CODE 区和data 区,cpu 从code 区读取指令,对data 区的数据进行运算处理
前者在程序运行中为只读,一般为FLASH,用来放置程序代码和一些只读的数据(如字模表之类),后者可以随机读写,用来存放程序运行中的临时数据,如局部变量或全局变量,全局变量一直占用着RAM 内存,而局部变量在使用完后会自动清除RAM 空间
当然在片外,可以外扩FLASH 和RAM(此时称为XRAM,因为寻址方式不一样),外扩的大小与单片机寻址能力有关
有的单片机将外扩RAM 封装在片内,如AT89C51,所以有了所谓的片内XRAM
变量的存储模式 变量是一种在程序执行过程中能不断变化的量
它有数据类型、存储类型、存储器模式和有效范围四种属性
C 语言规定每个变量必须有一个标识符作为变量名,在使用一个变量前,必须先对变量进行定义,指出其数据类型和存储模式
以便编译系统为其分配存储单元
在C51 中对变量进行定义的格式如下: [存储类型] 数据类型 [存储器类型] 变量名表,如auto char data i; 存储类型指明变量的存储区域,而变量的存储类型和变量在程序中说明的位置决定了它的作用范围
存储类型含义与C 语言相同
存储类型有四种:auto 型、extern 型、static 型、register 型,缺省为auto 型(看 来我 一直都 是凹 凸 型啊 )
其区别 如下: au to:自动变量
存储在内存的堆 栈 区,属于 临时性存储变量,并 不长 期占用内存,可以被 多 次 覆 盖
register:寄 存器变量
register 与au to 一样属于 自动类别
区别 在于 register的值 保 存在CPU 的寄 存器中
计 算机中只有寄 存器中的数据才 能直接 参 与运算,而一般变量是放在内存中的,变量