IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【单片机】51单片机存储使用总结 -> 正文阅读

[嵌入式]【单片机】51单片机存储使用总结

前期教程

前言

??在写了两篇关于51单片机的博客后,我自以为对51单片机已经非常了解了,但没想到最近在看一个代码的时候还是遇到了问题。于是再补上一个关于存储的知识点。【这一部分知识点建议查看官方手册,多看几个系列的

RAM

??从上面两篇链接我们知道,51单片机内部有256B的RAM,从0x00到0xFF,其中,低128B为通用RAM,高128B与特殊功能寄存器(SFR)地址重合,注意哦!只是地址重合,但在物理上仍然是两块区域。毕竟,特殊功能寄存器是寄存器,访问速度要高于RAM很多。其结构如下图所示。
在这里插入图片描述

??那这高128B的RAM怎么区分呢?答案是通过访问方式区分,据说二者的汇编代码是不一样的,但是对于C语言编程来说,最主要的区别大概就是特殊功能寄存器一般用sfr声明,而RAM则是根据定义的变量由编译器自动分配,不会特别声明使用

??但是51单片机中使用最广泛的STC单片机却没这么简单,它除了含有256B的内部RAM外,还含有 1024B的内部扩展RAM,这一部分在官方手册中有详细说明:
在这里插入图片描述
所以如果编程的时候遇到RAM大小不够用的时候,就可以考虑使用内部扩展RAM,只需要在声明变量时加上前缀xdata(因为默认是idata)。
??同时这部分手册似乎也说明了这个内部扩展RAM的来历:本来传统的51单片机就有考虑到数据存储器不够用的问题,于是想到了使用外部扩展RAM,利用其16位地址线,可以扩展64KB的外部RAM。但是访问外部RAM就会导致芯片引脚电平发生变化,于是STC的单片机就将外部的RAM“移到”内部了,这样就解决了这个问题。但是这个内部扩展RAM只有1K(根据型号不同有所差别),所以STC的单片机部分引脚数多的型号除内部扩展RAM,还可以访问外部扩展RAM,直到访问上限达到64KB。
在这里插入图片描述
通过控制内部寄存器的位可以决定是只访问外部扩展RAM还是内部加外部扩展RAM。

??此外,在使用内部扩展RAM时,下载的时候记得勾选相关选项,这个在官方手册中也有说明:
在这里插入图片描述

??另外,值得一提的是,对于某些STC单片机型号,部分扩展的特殊功能寄存器的地址和内部扩展RAM地址重合,就像是高128B的内部RAM一样,只是重合,物理上是两个区域。但是,这部分寄存器访问时需要注意将 P_SW2(BAH)寄存器的最高位(EAXFR)置 1

ROM

??说完了RAM,再来说说ROM。通过前面两篇博客,我们知道传统的51单片机,其内部ROM是4K,但是支持外部扩展,最大扩展64K,和上面提到的外部扩展RAM一样。因此,51单片机的ROM最大为内部ROM+64KB外部ROM。
??那怎么区分这几块存储区域呢?答案是利用EA引脚来确定是访问片内程序存储器还是访问片外程序存储器。当EA引脚接高电平时,STC单片机首先访问片内程序存储器,当PC的内容超过片内程序存储器的地址范围时,系统会自动转到片外程序存储器。
??但是STC的单片机根据型号不同,它的内部ROM大小也存在差别,举两个例子:
在这里插入图片描述

在这里插入图片描述

可见最大的ROM可以达到61KB,可以说基本满足大部分需求了,也不再需要外扩。

EEPROM

??EEPROM算是51单片机的一个特殊之处了,这个是传统51单片机没有的。这里的EEPROM和FLASH不是一个区域,不算在FLASH SIZE里面,这个可以通过官方的选型表看出。
在这里插入图片描述
二者是单列的,而且官方手册里面也给出了读写内部EEPROM的方法,这块区域主要用于存储一些不需要修改且数量较多的变量。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:22:29  更:2022-08-19 19:24:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 15:23:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码