单片机就是个小计算机,大计算机少不了的数据存储系统,单片机一样有,而且往往和CPU集成在一起,更加显得小巧灵活。

直到90年代初,国内容易得到的单片机就是8031:不带存储器的芯片,要想工作,还必须外加RAM和ROM,单片机成了3片机......

现在不同了,大的小的又是51,又是AVR又是STC,还有什么430,PIC等等,都各说各的好,可是谁也不敢说“我不要存储器”。

单片机的数据存储手段

01

程序存储器ROM

程序存储器里面存放的是单片机的灵魂:工作程序

小的可能只有1KB,最多只能装1024条8位数据,因为实际指令还有许多2字节,3字节指令,所以它还装不下1024条指令。大的也有128KB的。这些8位数据,要么在工厂里做模子光刻进去,要么一次性的烧写进去。

业余或开发,最多也就是用编程器这么一个特殊工具,把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处)。

它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个“只读存储器”的别名,简写为ROM,包括用编程器写紫外线擦除内容的EPROM、用电擦除的EEPROM和现在新兴的FLASH ROM。

一次性写入的ROM,仅用于电路和程序固定的批量产品中,实际工作起来,都是一样的。

为了定位ROM中的数据,每个8位存储单元都有一个固定的“地址”,通常用16进制数表示。例如,对于一个所谓4K的ROM,地址从0000H到0FFFH(即从0000,0001...4095),单片机运行时从哪个地址取数据,完全由程序本身决定,并不要我们干预。

记住,给单片机一通电,它经过一个短暂的复位过程,立即转向ROM的最低地址0000H,在这里面放置的往往是一条“跳转”指令,它从这里一步跳到另一个地址:程序的真正起始地址,例如51机的0080H。

ROM是程序存储器,除了指令外,还包括运行程序必须的某些固定数据,例如:数据表。假如,我们要求在单片机的接口上输出00H到FFH(255)按正弦半波变化的数值,每秒10000次。如果硬要它按照公式一个个计算,对于它来说未免力不从心。可是我们可以把预先计算好的数值存入ROM中,到时候直接取出不是好多了?

又如一个重要的应用:大家一定见过不少单片机的东西上面都有数码显示,那些个数字其实就是用单片机的口线控制数码管的字段电极电位。这些字形也是存放在ROM中的字模表,各个字模和0-9的数字(机器内当然是0000-0101二进制数)对应起来。常见的共阳极7段数码管,必须在阳极加正电,7个阴极都是地电位,才能显示数字"8",数字8对应的显示字码值是二进制数“10000000“(那个1对应的是小数点,高电位不让它显示)。

02

数据存储器RAM

这是个可以随时存取数据的一块存储器,也就是可以读(取)也可以写(存)的存储器,简称RAM。

现在的单片机里面使用的RAM,属于静态RAM或SRAM,这个和电脑用的内存条有所不同。只要你把数据写入SRAM后,不断电或者不清除掉,这个数据就一直保存在那里。电脑用的是动态RAM,要不断给它加刷新脉冲才能保存数据。

因为单片机处理的信息量比电脑小很多,所以它带的RAM也比较少:从完全不带、带128、256、...1K、2K,到4K,比ROM少多了。

因为实际上RAM只是作为数据临时存放的地方,除非进行图像处理需要存放大量的数据外。一般对于执行较简单任务的单片机,有这么多也够用,如果实在不够用也只能采取外加SRAM如6116、6264等等来扩展。

为了对RAM单元存取8位二进制数,当然也得和ROM一样用“地址”来标示它的具体位置。假如某单片机有1K(1024)RAM,它的地址也是从0000到1024,或16进制数的0000H到03FFH。可见,和ROM的地址是一样的。

会不会混淆不清?

不会,因为读ROM是由单片机的程序指针或转移指令或查表指令进行,而这些指令是不会进入RAM区的;读写RAM是另外的数据传送指令,也不会进入ROM区。这点也是和电脑不同之处,后者程序和数据都在内存条里面,地址不同,如果窜位了就会造成不可预见后果。单片机的这种存储器结构也称为哈佛结构。

RAM在单片机里的用途

RAM在单片机里的用途,主要是存放临时数据。

例如用单片机测温,每秒测1次,显示1分钟的平均值(1分钟更新一次):

我们先通过传感器、放大电路、A/D转换,把温度这个模拟量转变为成比例的二进制数,然后每秒钟1次把数字量通过输入口顺序存入到单片机的RAM中,然后对他们进行两两求和再平均的计算,最后的数值显示出来,然后把这60个存储单元统统写0清除旧数据,下次又是如此循环进行。

结 语

另外在单片机里面还有若干寄存器,数量不多但是作用很大,除了暂存数据,还可以交换、加工、传递等等,以及随时记录单片机当前处于什么状态,输入输出口也是作为特殊功能的寄存器存在,具体各有不同,就不是随便说说可以搞清楚的,要看有关书籍了。

RAM在单片机里究竟有什么用?相关推荐

  1. c语言中swap表示什么意思,swap是什么意思_单片机里的SWAP A是什么意思啊?

    Swap是什么意思 Swap是一种金融衍生品,指交易双方约定在未来某一期限相互交换各自持有的资产或现金流的交易形式. 外汇里的"swap"是什么意思? 外汇里swap专业说法是掉期 ...

  2. 用计算机控制150个继电器,计算机怎样控制单片机里的继电器

    电子世界真的很奇妙.在此献上本人第一个电脑控制单片机里的继电器.让你也感受下电子世界奇妙. 单片机程序: 将此程序借助软件写入单片机内: 单片机 PC端为单片机写入的程序的软件 开发板端的连接 PC端 ...

  3. 到底什么是嵌入式?什么是单片机?究竟有何区别?

    本文转载自微信公众号 "鲜枣课堂",作者:小枣君          凡是从事计算机或电子信息相关领域工作的童鞋,一定都听说过嵌入式和单片机吧?     很多人应该知道,这两个名词和 ...

  4. 单片机里XPL是什么_单片机可以替代PLC么?

    无意看到论坛的一篇帖子"单片机能改变世界".都愁死我了,口口声声说自己做工控做什么的我真想问,你们都进过工厂么?看过工业环境么?只是最多在监控室里看看而已吧. 了解工业防护等级么? ...

  5. 单片机里面的CPU使用率是什么鬼?

    打开电脑的任务管理器,看着跳动的CPU使用率,发现很舒服.每一个线程占用了多少CPU清清楚楚,也就能针对性的确认为啥你的电脑跑的慢了. 今天这篇笔记不讲每个任务(或线程)CPU的使用情况,而是单片机整 ...

  6. cpu使用率_单片机里面的CPU使用率是什么鬼?

    打开电脑的任务管理器,看着跳动的CPU使用率,发现很舒服.每一个线程占用了多少CPU清清楚楚,也就能针对性的确认为啥你的电脑跑的慢了. 今天这篇笔记不讲每个任务(或线程)CPU的使用情况,而是单片机整 ...

  7. c语言怎么写到单片机里,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /**************************************************************************** ...

  8. Eclipse里究竟是哪个文件存储的project facet信息

    Created by Wang, Jerry on Jul 20, 2016 我把这个2.0改成1.1, 我能断定project folder里一定有某个文件被这个操作修改了: 于是我就用一个工具搜索 ...

  9. stm32单片机里面的GPIO是什么意思?

    General Purpose Input Output (通用输入/输出)简称为GPIO,就是IO口而已.就相当于51单片机中的IO口,即P1_0等. GPIO的八种模式: typedef enum ...

最新文章

  1. stylus 在静态页面上的使用经验
  2. java 中的 Scanner
  3. linux shell if
  4. execv shell_exec系列函数(execl,execlp,execle,execv,execvp)使用
  5. Windows拷贝大文件
  6. 理解Load Average做好压力测试
  7. 【Linux】监视gpu使用情况
  8. C#捕获控制台(console)关闭事件
  9. (转)券商IT研发现状:一年最多花5亿 中小公司靠外包
  10. 找到某个关键字 同义词词林 python_3.6 什么是LSI关键字?为什么它对SEO很重要?...
  11. 利用信息差怎么赚钱?分享两个信息差赚钱项目
  12. 三方支付之支付宝支付实现逻辑
  13. 在页面上的输入框中即可以输入文字,又可以动态的插入图片的功能.
  14. 华为云APIG限流控制
  15. 开箱即用!中文关键词抽取(Keyphrase Extraction),基于LDA与PageRank(TextRank, TPR, Salience Rank, Single TPR)
  16. 解决U盘制作Ubuntu系统安装盘后无法格式化且容量无法恢复
  17. 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
  18. virtualhackinglabs靶机 ANTHONY 10.12.1.113
  19. Unsupervised Domain Adaptation for Semantic Segmentation by Content Transfer
  20. AFNetworking2.4.1解析

热门文章

  1. Python去极值方法
  2. Windows 10家庭版启用远程桌面的方法
  3. 样品制备丨艾美捷蛋白质羰基比色测定试剂盒方案
  4. 阿里互联网一线大厂Java岗面试题库(2022年版)这次38k 稳了
  5. 精彩推荐:云计算的未来,超市还是电厂?
  6. QT实现文本编辑器(简易版)
  7. uefi启动解析:由原理到实例
  8. 论文写作 4: 彻底解决英文句子的语法问题 (好的中文 = 好的英文)
  9. 秀!学妹看见都惊呆的 Python 小项目!【界面应用项目及游戏开发】
  10. matlab 牛顿法 初值,非线性方程的数值解法:牛顿法及牛顿下山法(含Matlab程序)...