单片机RAM总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机RAM总结.doc

51单片机RAM 数据存储区学习笔记 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间。在keil中编写程序,如果当前模式为small模式,如果总的变量大小未超过128B,则未初始化的变量的初值默认为0.如果所有的变量超过单片机small模式下的128B大小,则必须对变量进行初始化,否则超过RAM大小变量的值是不确定的,在small模式下超过128B大小的变量也必须在编译器中重新设定存储器的存储模式。 在keil中,可选择small,compact,large三种方式存储数据变量: 在keil中可以用“TargetOptions”来配置这一项: 图1 选择数据存储模式 2.片内数据存储区 (1) 工作寄存器区 工作寄存器区位于片内数据存储器中的00H~1FH单元,共32字节( 如此说来每个单元是一个字节了 ),分成四组。每组8个字节,分别记为R0~R7. 程序默认在0区工作寄存器组存放中间运算数据。等待中断来时,中断数据工作寄存器组由0区切换到其它区域。 选择四组工作寄存器区的哪一组作为R0~R7由位于PSW寄存器的两位RS1,RS0来确定. RS1,RS0称为区开关或组开关,两位就可决定四种状态. (2)位寻址区 用户存储区位于片内数据存储器中的020H~02FH单元,共16个字节,共128位,每个字节单元的位都有一个单独的地址,分别为00H-07H,如020H.1表示020H单元的bit[1]位。020H~02FH单元可作为位寻址区。这个范围内的存储单元最大的用处就是能进行位操作,在C语言中,只能用位操作运算符(、|、^、~、、)来对字节数据进行位操作运算。如果用汇编指令就可以直接对此片存储单片进行位操作。 如 SETB, 020H.1 就将020H的bit[1]置为了1. 除了RAM此片能进行位寻址的用户存储区以外,还有一些特殊的功能寄存器( SFR )也能进行位寻址。 (3)数据缓冲区 51系列数据缓冲区地址为30H-7FH,共80字节。只能字节寻址,不能位寻址。由于工作寄存器和位寻址区,数据缓冲区是统一编址的,所以这三者都可以用作数据缓冲区。 (4)堆栈 栈:由系统自动分配释放,存局部值。 堆:一般由程序员分配和释放。 堆栈指针SP:8位寄存器,堆栈最大可达128单元,只可在片内RAM中进行堆栈操作。 堆栈作用:用来保存地址、数据信息、具有先进后出特性,也是一种能存放二进制数据的空间。 MC51堆栈采用满顶法向上生成的软件堆栈。 软件堆栈:借助SP进行控制操作。 堆栈向上生长:新压栈的数据成为堆栈顶。 堆栈向下生长:新压入的数据远离堆栈顶。 地址大小还得看存储方式。 (5)专用寄存器区 专用寄存器区,也称特殊功能寄存器区 SFR SPECIAL FUNCTIONREGISTER 寻址地址离散地分布在80H~FFH,共128字节的空间.而实际有用的只有21个字节,即在这一空间里只有18个专用功能寄存器,其中有3个专用功能寄存器占用了两个字节.SFR主要用于片内硬件的管理,通常只能以字节为单位借助于MOV指令直接寻址,但也有一些专用功能寄存器可以位寻址。 包含程序状态字PSW、数据指针寄存器DPTR、端口地址P0-P0、其它专用寄存器(累加器A、B) 3.片外数据存储区 片外RAM区:可寻空间为共64K 0000H~FFFFH, 总是使用MOVX类指令寻址 借助于工作寄存器R0或R1间接寻址时,可寻256字节 从片外RAM区取数据: MOVX A,@Ri i=0-1 向片外RAM区存数据: MOVX @Ri,A 借助16位的数据指针DPTR间接寻址,可寻64K字节: 从片外RAM区取数据: MOVX A,@DPTR 向片外RAM区存数据: MOVX @DPTR,A 区分是访问内部存储器还是外部存储器地址靠指令来区分。

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档