单片机存储器一些相关知识的学习

发布者:SereneVoyage最新更新时间:2024-02-27 来源: elecfans关键字:单片机  存储器 手机看文章 扫描二维码
随时随地手机看文章

接着上一期内容我们继续来认识一下单片机存储器,学习一些相关知识。

片内的ROM和片外的ROM有两种组合方案,第一个方案是51单片机内部的ROM一共有4K,4K是它的存储容量,它的存储空间分布地址分布式从0000H到0FFFH,大家要理解什么叫做存储容量,什么叫做地址分布,比如说一个空间里面可以容纳4085个人,这4085个人指这个空间的容量是4085个人,把十进制的4085转换成这个二进制转换成二进制的这种方式称之为4K,也就是按照二进制进行编码,一共会占到12个1,就是2的平方乘以2的10次方,这样的话它的地址空间就是从0000H到0FFFH,也就相当于是这个空间一共是4096个座位,每个座位上可以做一个8位的二进制数,这个座位我们不按十进制进行编码,而是按照二进制进行编码,需要多少个多少位的二进制呢?需要12位的二进制,这样的话这12位的二进制,它的范围就是从12个0到12个1,我们按照16进制来表示,那这个地址空间的分布就是从0000H到0FFFH,大家一定要能够理解这个空间和地址分布的一个概念就是地址实际上是对每一个单元的一个编码,只不过是按照二进制进行编码,以16进制的方式呈现,这个和空间的概念把它深刻地领会一下。

pYYBAGIgOzeANSLCAAU482ncsck555.jpg

51单片机内部的ROM一共是4K,也就是存储空间是4K,同时如果说你的单片机内部ROM不够用,也可以使用外部room,这个时候我们有两种方案可以配置,这两种方案的配置是由什么来决定?是由这个我们单片机当中有一个引脚,叫做EA引脚,这个上一篇文章,单片机引脚的时候提到过引脚,当EA引脚如果说结成高电平的时候,我们使用的是内部ROM,这个时候就相当于我们用的是这个方案一,如果说是内部ROM的话,比如说写了一个程序写了8K,内部ROM只有4K,这个时候你必然要做外部的扩展,就是外部会扩展4k,比如说外部扩展了4K,这样的话加上内部的4K一共是8K。

这个程序如果说把EA引脚接成高电平,它这个程序应该怎么走呢?那就是说在程序存储的时候,它是刚开始肯定是先存在内部ROM,当内部ROM4k存满了之后,它会自动的跳到外部的入幕当中进行存储,也就是跳到外部扩展的那4K进行存储,那这个是EA接成高电平的时候,如果说EA接成低电平的时候采用方案二,这个时候内部ROM就没有用了,这个时候我们程序存储的时候是从外部ROM开始存储,这个时候外部ROM,比如说就要扩一个8K的外部ROM,这个程序就是只存在外部ROM当中,就不会再烧到内部ROM当中,这个大家要注意的这两种方案,我们目前常用的方案都是直接把EA引脚接成高电平,使用内部的ROM,因为我们现在集成电路的发展速度很快的吧,ROM空间已经可以全部做到内部去了,它最大可以做到多少呢?最大不能超过64K,这个的原因主要是由我们51单片机它的地址总线决定的,它的地址总线是16位的,所以它的最大的空间是2的16次方,也就是不能超过64K,它的寻址的一个地址范围已经确定了,就是说它不能超过64k,原来可以使用内部ROM的方案,也可以使用外部ROM的方案。

pYYBAGIgOzqAJQEGAASWZqtNDg4490.jpg

如果使用内部ROM方案可以不可以扩展外部?也可以扩展外部的,当内部用完的时候会自动跳到外部去,但是如果我们使用的是外部ROM这种方案,把一些接通了的电平,这样的话,如果说外部没有扩展ROM,这个芯片就用不了,必须要快扩展外部ROM,也就是说当接成高电平的时候,可以同时使用片内和片外,如果接成低电平的时候,你仅能使用片外的ROM,片外的ROM就不可以缺少了,这个大家注意,片内片外它是采取统一编制的,所以可以把它看作一个逻辑存储空间,这样的话实际上我们51单片机四个存储空间,相当于三个逻辑存储空间,因为我们的ROM就是说ROM这相当于是一个逻辑空间,因为它的片内和片外采取的是统一编制的办法,虽然它物理上是两个,但实际上在逻辑上我们是一个,所以我们51单片机有四个物理存储空间,但是相当于是三个逻辑存储空间,它们最大的扩展容量都不能超过64K,这个是由它的地址总线决定的,这个大家一定要理解。

poYBAGIgO0GAeVpuAAZP052tLxQ700.jpg

接下来看ROM当中的几个特殊的单元,在ROM当中,它实际上还有几个比较重要的或者是叫特殊的单元,从0000H这个地址,这个地址要注意,这个地址是单片机上电的时候,PC指针指向的一个首地址,所以单片机上电的时候,永远都是指向这,当单片机指向这的时候第一条指令这个地方是主程序的跳转指令。

poYBAGIgO0iAIlxXAAkwJXkbIBo953.jpg

所以通过这个图你就可以了解我们单片机的一个执行过程,比如说你写了一段代码,这段代码从什么地方开始存呢?从0030H开始存,也就是说我们之前文章写流水灯的代码,从这个地方开始顺序往上存,那单片机上电的时候,它怎么样来找到这段代码来执行的呢?是因为我们在0000这个H当中做了一条跳转指令,也就是PC指针附列复位的时候,永远指向这,有了这条跳转指令上面之后,就会立马跳到这个位置去顺序执行我们的代码,在执行代码的过程当中,如果说发生了中断,这几块就发挥了作用,那你可以发现从0003H到0023H这几个字节,是我们的中断向量的入口地址,那这一块儿主要适用于程序的引导,是比较特殊的单元,我们存放代码的时候尽量的是不要存放在这个位置,当然了,我们用C语言或者用Kail编写51单片机的程序,就是编C语言的程序,我们的编译器会帮我们做处理,所以大家大概了解一下程序存储的过程,就是我们程序的控制是靠PC指针,PC指针上面的时候指向我们放一条跳转指令,为什么放跳转呢?因为我们的主程序真正的存放是从这开始存的,那为什么不存在这一块呢,因为这一块儿是我们的中断向量的入口地址是中断的,这个我们到时候讲中断的时候再给大家具体来分析,先记住有五个中断,有五个中断源,所以有五个中断向量的入口地址,每一个中断向量入口地址占了是8个字节的存储空间,所以可以发现,从0003到从03到这个地方,000一共只有三个字节用于存放跳转指令,所以这边一般是不足以存放一段代码,只能存跳转指令,具体的这个程序的执行,我们讲中断的时候再给大家分析,但是你要先记住这几个关键的单元,这个关于我们叫做中断向量的入口地址,这个0000H是主程序的入口地址,中断的话,我们后面再给大家具体来讲。

pYYBAGIgO06AXrxyAAZ0hfWAyXg837.jpg

接着看片内的数据存储器,数据存储器主要是用来存放程序运行的中间结果,8051单片机,它的RAM片内的数据存储器RAM一共是由两部分组成的,一个是低于128个字节,第128个字节也就相当于这个空间有128个座位,按照十进制进行编码的话,是从0到127的把它按照二进制进行编码,就是从00H到7FH,这个是低128个字节的用户RAM,接着还有一个高128个字节的RAM,但是需要注意的是我们用户能够使用的是128个字节,高128个字节,我们叫做特殊功能寄存器区,是我们单片机特殊的一些单元,我们叫特殊功能寄存器,SFR那些单元全部在,高128个字节里面,所以我们通常讲51单片机的内部的RAM是多大,我们通常指的是128个字节,而没有讲是256个字节,但实际上它内部是256个字节,只不过这高128个字节是我们的特殊功能寄存器区,这个大家要把它理解清楚,就是低128个字节是我们的普通RAM区,高128个字节是特殊功能寄存器区。

pYYBAGIgO1KAbsaWAAOLdWnIOPg001.jpg

低128个字节同时它又画了好几个区域,低128个字节主要分为三个区域,第一个区域也就是从00H到1FH,这个地方一共分了四组,每组八个,一共占了32个字节,我们叫做工作寄存器区从20H到2FH,我们叫做位寻址区,在位寻址区里面,我们对每一个位又进行了编码,进行了位的地址编码,大家可以发现,从20H到2FH一共占了16个字节,一个字节是八位,正好是128个位,那这128个位我们又给它做了一个啊,地址的一个啊定义,那就是说我们重新对这128个为,每一个未进行一个地址编码,相当于是我们这个空间可以坐128个人,但这个时候这128个人不再是128个字结束了,而是什么呢?而是一个位,就是一个比特,这128个位,我们还是把它按照地址的方法进行编码,按照二进制进行编码,那正好还是00到7FH地址空间,这个叫做位地址,这个大家要和字节地址区分开,大家可以发现这个RAM的字节地址也是从0到7F,那这个位地址它也是从0到7F,但是它里面做的数不一样。


关键字:单片机  存储器 引用地址:单片机存储器一些相关知识的学习

上一篇:泰芯TXLink仿真器MCU单片机开发调试工具
下一篇:CC2531芯片的全速USB接口设计

推荐阅读最新更新时间:2024-11-12 19:02

单片机--按键定时器检测:短按、长按
通过使用定时器计数的方法来分辨按键的:短按、长按 检测到引脚被拉低:按键按下为低电平,没有按下为高电平 延时10毫秒:滤波 引脚还是被拉低:确定按键被按下 设置按键按下标志 开启定时器,开始计数:定时器中有一个全局变量用于记录计数值 直到引脚被拉高:按键被释放将为高电平 关闭定时器 检测按键按下标志 检测定时器按键检测时间全局变量是否大于某个值,一般为200ms 大于则为长按,否则为短按 51系列单片机按键检测 typedef enum { KEY_SINGLE_PRESSED, KEY_LONG_PRESSED, KEY_DEFAULT_STATUS, } key_state_e; uint8_t ylf_key_
[单片机]
莫大康:中国存储器梦初探
中国上马存储器芯片制造引起全球的反响,恐怕2019年及之后会揭开面纱,露出“真容”。它对于中国半导体业具里程碑意义,实质上是为了实现产业“自主可控”目标打下扎实基础,所以“气只可鼓,不可泄”。尽管面临的困难尚很大,但是必须要认真去对待,重视知识产权的保护,并努力加强研发的进程。   -莫大康 2018年1月22日 中囯己有三家企业向存储器芯片制造发起冲锋,分别是武汉长江存储的32层3D NAND闪存;福建晋华的是32纳米的DRAM利基型产品;以及合肥长鑫(睿力)的19纳米 DRAM。而且三家都声称2018年底前将实现试产,开通生产线。 如果再计及紫光分别在南京和成都刚宣布再建两个存储器基地,总计己有五家企业。   艰难
[半导体设计/制造]
老工程师对嵌入式学习之51单片机的一些心得体会
很多人问我嵌入式发展如何,单片机应该如何学习,今天就给大家带来我的一个朋友心得和经历。本人还是学生,现在大三,接触单片机一年多以来,从最基础的51开始,到更高级点的MSP430,一直到现在刚开始上手的STM32,编过的程序不算多,但加起来怎么也有上百个了,做过的东西仔细数数,能拿出手来算算的上是个样的也不下十个,算是小有所成吧。 但今天,我却发现,这一年我一直在走一条歪路。 先说一下情况吧,是这样的,最近同学几个合伙做个小项目,不算复杂,跟市面上的工程项目完全没法比,用难再需要使用的一个芯片是老师给的,从没用过,没有历程,至于一份电子版的数据手册,一切的一切都只能是从头开始,从底层开始,我们几个斌开始从最底层的逻辑时序、寄存器操
[单片机]
老工程师对嵌入式学习之51<font color='red'>单片机</font>的一些心得体会
单片机学习步骤工程师的经验
有了单片机学习板之后你就要多练习,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用。另外我再说说用汇编和C语言
[单片机]
PIC单片机低功耗系统的设计
引言 20世纪90年代以来,随着集成电路特征线宽的持续缩小以及芯片密度和工作频率的相应增加,降低功耗已经成为亚微米和深亚微米超大规模集成电路设计中的一个主要考虑因素。功耗的增加会带来一系列问题,例如电路参数漂移、可靠性下降、芯片封装成本增加等。因此,系统的功耗在整个系统设计中,尤其是在采用电池供电的系统中显得十分重要。 MICroChip公司PIC系列的单片机为设计高性能、低功耗的单片机系统提供了很好的解决方案。 1 低功耗设计方法 为使系统工作在低功耗状态,必须正确设置单片机的配置及工作方式。下面结合最常用的PIC12、PIC16等单片机介绍低功耗系统的设计方法。 1.1 基本设计方法 有许多技术可以降低系统的功耗,
[单片机]
PIC<font color='red'>单片机</font>低功耗系统的设计
单片机控制点阵矩形收缩闪烁源程序
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到点阵部分的原理图即可.这是一整个单片机开发板的电路图其他的忽略 以下是程序源码: /** *功能:矩形收缩闪烁 *作者:徐冉 *日期:2013-06-26-22:13 *备注:程序调试成功 **/ /********AT89C52-RC MCU****************/ /*************51hei开发板**************/ #include reg52.h typedef unsigned int uint; typedef unsigned char uchar; sbit din = P2^0; sbit cs = P2^
[单片机]
富士通将退出半导体市场,Spansion将收购富士通MCU和模拟业务
闪存解决方案的领先创新者飞索半导体公司 (Spansion Inc.) 与富士通集团 (Fujitsu Limited) 旗下全资子公司富士通半导体有限公司 (Fujitsu Semiconductor Limited) 近日宣布达成最终协定,前者将以近1.1亿美元外加约6500万美元库存的代价收购后者的微控制器和模拟业务。在扣除种种影响后,飞索半导体预计进行这项交易会提升其2013年每股盈余。   飞索半导体总裁兼行政总裁约翰-凯斯波特 (John Kispert) 表示:“此次收购将带来增值收益,同时还与我们向片上系统解决方案拓展的规则相一致,不过实施这一规则需要在嵌入式闪存技术领域居于领先地位。我们将获得宝贵的人才和
[半导体设计/制造]
如何对GD32 MCU进行加密?
GD32 MCU有哪些加密方法呢?大家在平时项目开发的过程中,最后都可能会面临如何对出厂产品的MCU代码进行加密,避免产品流向市场被别人读取复制。 下面为大家介绍GD32 MCU所支持的几种常用的加密方法: 首先GD32 MCU本身支持防硬开盖破解的功能,GD32 MCU内部Flash直接硬开盖破解读取的数据无法在同型号的产品上运行,因为GD32 MCU内部Flash物理地址和逻辑地址是随机加密的,因而可以有效防止硬破解读取代码的可能,这是GD32 MCU本身支持的,无需使用者进行配置; 可以设置读保护,GD32 MCU支持读保护设置,有些MCU支持低保护等级,设置读保护后,通过ISP出厂BOOTLOADER或者SWD端口均无
[单片机]
如何对GD32 <font color='red'>MCU</font>进行加密?
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved