51单片机存储器原理


水池洁净
水池洁净 2022-09-21 14:49:38 52356
分类专栏: 资讯

一、 80C51单片机的存储器结构

80C51单片机的存储器包括两类:程序存储器数据存储器

程序存储器用来存放用户程序和常用的表格、常数,采用只读存储器(ROM)作为程序存储器。

数据存储器用来存放程序运行中的数据、中间计算结果等,采用随机访问存储器(RAM)作为数据存储器。

从物理地址上看,MCS-51系列单片机有4个存储器空间,即片内程序存储器和片外程序存储器、片内数据存储器和片外数据存储器。

 二、片内数据存储器

80C51单片机的内部存储器分为内部程序存储器和内部数据存储器,这种程序与数据分开存放的存储器结构称为“哈佛”结构。(所谓哈弗就是数据与程序分开存储,这也是51单片机的缺点:速度不快;对应的是冯诺依曼结构,是数据与程序存储一块。)

因为80C51单片机的内部数据存储器有256个单元,所以单元地址用8位二进制数表示。但这256个单元并不完全是作为数据存储器来使用的,其中低128个单元(地址范围为00H~7FH)是对用户开放的;

高128个单元(80H~FFH)中分散地分布了21个特殊功能寄存器。

片内RAM低128个单元按其用途可分为3个不同的区域,即工作寄存器区位寻址区用户RAM区。

工作寄存器区

​​​​​​​​​​​​​​

在此区域中共有32个存储单元,其地址范围是00H~1FH,分成4个通用寄存器组,即通用寄存器组0~通用寄存器组3,每组有8个存储单元,构成通用寄存器R0~R7。各组通用寄存器的名称与单元地址的对应关系见表从表可以看出,每个通用寄存器组都包含相同的通用寄存器R0~R7,它们只是地址不同,所以这4个通用寄存器组是不能同时使用的,可以使用程序状态字寄存器(PSW)中的RS1和RS0位来选择当前使用的通用寄存器组,在单片机的初始状态下,当前使用的通用寄存器组为通用寄存器组0。

   

   

  1. //方法一:改PSW
  2. MAIN:
  3. ......
  4. ......
  5. ACALL DELAY
  6. AJMP MAIN
  7. DELAY:
  8. SETB RS1;
  9. SETB RS0;//调用通用寄存器3 //也可以PSW|=0x18;
  10. ........
  11. ........//寄存器延时
  12. CLR RS1;
  13. CLR RS0;//恢复默认状态:调用寄存器0 //也可以PSW&=0xE7;
  14. RET
  15. END
  16. 方法二:不调用寄存器组,申请一片空间
  17. MAIN:
  18. ......
  19. ......
  20. ACALL DELAY
  21. AJMP MAIN
  22. DELAY:
  23. PUSH ACC
  24. D0: MOV A,00H
  25. MOV 30H,A
  26. INC ACC
  27. CJNE ACC,0FFH,DO
  28. POP ACC
  29. RET
  30. //这也是c语言中的unsigned char i;存储在RAM中,
  31. 由于51单片机本身用户自定义的就不多,最好用方法一

位寻址区

位寻址区位于工作寄存器区之上,它的地址范围是20H~2FH,共16个单元。这16个单元都有单元地址(也称字节地址),可以按单元地址访问其内部存储的8位二进制数,称为单元寻址。另外,这16个单元中的每一位都有一个位地址,也可以按位地址访问所存储的一位二进制数,称为位寻址。所以,位寻址区的单元既可以按单元寻址,也可以按位寻址。这128位的位地址范围是00H~7FH。

例如:MOV   20H,0FFH

          MOV 24H,   11111110B

        MOV   A,   20H;字节寻址:把20h单元的8位2进制数(一字节)送到A=0FF

        MOV C,    20H; 位地址寻址:把20h,代表的一个2进制数送到C=0;

 用户RAM区

从地址30H至7FH共80个单元,把这一存储区域称为用户RAM区。对这个区域的使用,不做任何规定和限制,一般把堆栈设置在此区域。

特殊功能寄存器(SFR,Special Function Register)

80C51单片机有21个特殊功能寄存器,它们分散地分布在80H~FFH地址范围内的21个单元中,剩余的存储单元用户不能使用。

程序存储器

在MCS-51系列单片机中,有些单片机内部含有程序存储器,例如80C51单片机内部含有4KB程序存储器;

无论内部有无程序存储器,外部都可以再扩展程序存储器,扩展的最大容量为64KB,下面以80C51单片机为例加以说明。80C51内部含有4KB ROM,其地址范围是0000H~FFFH。它的外部可以再扩展64KBROM,其地址范围是0000H~FFFFH。从两者的地址对比可以看出,内部程序存储器的地址和外部存储器的低4K地址重叠,地址范围都是0000H~0FFFH。解决的办法就是利用引脚的状态来区分。如果引脚接地,即=0时,就使用64KB的外部程序存储器;如果引脚接高电平,即=1时,就使用4KB的内部程序存储器和外部程序存储器的高60KB空间,如图2.3所示。总之,CPU可访问的程序存储器的最大容量为64KB。注意:由于80C31单片机内部不含有程序存储器,要在片外外接程序存储器,因此它的引脚必须接地。

单片机的程序存储器中有两个具有特殊功能的区域。

 总结

作者观点:总之,对于RAM和ROM,当我们写程序时,把程序烧到ROM,也就是按一定的逻辑形成一系列的逻辑开关,但是在CPU进行运算,转移时需要不断改变开关逻辑,于是RAM孕育而生,但是由于技术限制,RAM不能掉电保存逻辑,也就是电路中各个硅电子不能保存,且工艺限制做的内存大。于是形成了RAM与ROM通过CPU总线联动。

通过51单片机的RAM地址,ROM地址,可以看到,ROM存储程序,通过CPU传递数据,到RAM,而RAM是各个寄存器的集合,按ROM程序形成逻辑,响应CPU,同时传递给ROM信号(这里ROM的逻辑已不变,相当于与或非的各种开关)。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=9162
赞同 0
评论 0 条
水池洁净L0
粉丝 0 发表 5 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2951
【软件正版化】软件正版化工作要点  2872
统信UOS试玩黑神话:悟空  2833
信刻光盘安全隔离与信息交换系统  2728
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1261
grub引导程序无法找到指定设备和分区  1226
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!