STC8H8K64U单片机存储器总结

存储技术

595人已加入

描述

前言

本文对STC8H8K64U单片机存储器进行了总结(它的内存构造和其他单片机并无太大差别),并发表了本人的一些看法,存储器是单片机、微机的关键,理解这一部分内容,受益终生。

一、程序存储器

程序存储器(又称为数据Flash),顾名思义,是用来存放用户的程序,让单片机按照所写代码顺序执行,并完成指定任务。

所以程序存储器也就是我们听说过很多次的ROM(Read-Only Memory)只读存储器。

里面存放的是代码,一般还有常数、表格、圆周率值、数码管字形、单片机ID号、内部参考信号源、掉电唤醒定时器频率、IRC参数等等数据

注意:单片机每次都是烧录程序,烧录就是为了把代码放到程序存储器中,而我们用的电脑则是把硬盘的数据和程序放到RAM,再用CPU去读取RAM里面的数据和程序

一般在C51中,我们可以加个code,把数据存在程序Flash中。

unsigned char code date[2] = {0x01,0x20};

二、片内基本RAM

片内基本RAM,听名字是不是感觉就是只个RAM(Random Access Memory)随机存储器,以STC8H8K64U单片机256字节的RAM为例,其实这部分包括有:

片内低128字节,高128字节以及特殊功能寄存器。

为什么要把低128字节和高128字节分开说呢,因为功能不同

1.低128字节RAM

低128字节RAM是单片机基本的数据存储区,是最接近CPU的数据存储区,也是功能最丰富的存储区。

它有哪些功能呢,见下图:

单片机

可以看到,此型号单片机低128字节RAM包含了4个工作寄存器组,一个组内有8个寄存器,可位寻址区,堆栈区。

对于堆栈区,我有些许心得,平时我们执行的函数,进入函数便要使用栈,进行压栈,退出函数的时候就出栈,可以说,栈的作用就是记忆,记录下进入函数之前的位置,执行完函数,原路返回,我们定义的主函数也是函数,其中的临时变量等也在栈区,但是全局变量不在堆栈区。

此处我并没有讲堆栈的区别,此文重心不在这个上面,主要是对内存有整体的认识。

2.高128字节RAM 与 特殊功能寄存器

高128字节的地址和特殊功能寄存器地址是一样的,你会很奇怪,这不是冲突了吗?

没错,确实冲突了!

但是我们可以通过不同的操作方式来访问他们,高128字节RAM只能采用间接寻址的方式来访问,特殊功能寄存器则可以使用直接寻址的方式来访问。(如果不清楚寻址方式的话,可以去看一下另一篇文章《指令系统与寻址方式》以及系列文章)

在C51中,要在高128字节存放数据可以使用:

unsigned char idata date[2] = {0x01,0x20};

特殊功能寄存器可以用其名字即可进行存取操作

三、拓展RAM

拓展RAM又分为片内拓展RAM和片外拓展RAM

扩展RAM类似于传统的片外数据存储器,采用访问片外数据存储器的访问指令(汇编助记符为 MOVX )访问扩展RAM区域。

可以通过AUXR寄存器中的EXTERAM位来选择片内拓展RAM或片外拓展RAM。

有这东西完全是因为片内基本RAM实在太少了。

四、EEPROM

EEPRROM,你可以从它的名字上看出ROM这三个字母,没错,它属于ROM,它又被称为数据Flash,在IAP功能下,程序存储器用剩下的空间会被用作数据Flash(EEPROM),用来存放一些应用时需要经常修改,掉电后又能保持不变的参数。

最后放一张图,让大家感受一下整体结构。

单片机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分