分区:软件资讯 更新:2023-03-11 09:31:27
对于51单片机,其片内存储器分为RAM和ROM,用于存储程序。
我们以AT89c51为例。作为一款经典的51单片机,它带有128字节的RAM和4K字节的ROM。注意古典只读存储器和现代计算机只读存储器的区别。
我们分别讨论一下ROM和RAM。
1. ROM
什么是4K字节只读存储器?
有51单片机开发基础经验的童鞋应该记得,我们用C语言写完单片机程序后,会在开发环境(如Keil)中点击编译按钮进行编译。
这时,一个IDE(集成开发环境)Keil将C语言“翻译”成相应的二进制机器码。
然后我们通过烧录工具把二进制机器码“灌输”到单片机里。
植入微控制器的程序在哪里?
是的,它存储在只读存储器中。所以ROM也叫程序存储器。
对于古董单片机而言,其上电运行时,ROM内的数据只能被读取而不能实时写入,即“只读”。
由于最初的单片机受限于闪存技术,在程序运行时,只能读取ROM存储器,而不能在线写入。但是,它可以被反复离线擦除并写入新程序。
因此,ROM只读存储器的名称由此而来。
现代单片机的ROM一般采用FLASH闪存技术,不仅可以离线通过烧录器写入,也可以在线通过自身的代码来修改FLASH数据,达到类似“硬盘”的疗效。
比如单片机已经算出1 ^ 2 ^ 3等于6。
如果我们需要在关机重启后保存6的结果,那么我们可以事先在程序中添加一段代码,让微控制器将结果存储在FLASH的一个存储单元中。
那么,即使关闭电源,重启电脑,数据也不会消失。下次从这个地址读取时,数据就是上次计算的结果。
我们以典型的ST单片机为例,其闪存擦除次数高达10000次。而且这种技术现在也不是高端产品,一两块钱的单片机就能做到。
ST的数据手册
一两块钱一个硬盘的电脑,性价比不是很高,好用!
2. RAM
先说128字节的RAM,也叫数据存储。
单片机上电后是如何工作的?让我们简单概述一下关键节点。
首先,单片机上电后,复位电路触发单片机复位,使单片机的所有状态都处于复位状态,所有寄存器都处于默认值,这样一切都在意料之中。
然后根据设计时的“安排”,单片机开始在ROM中相应的位置加载数据,这就是“程序”。
比如指令MOV 20H, A;
就是将累加寄存器A中的值送入RAM的20H这个“坑”中,20H就是这个“坑”的地址。
20H代表十六进制的20,等于十进制的32,即:编号32的坑。
128字节的RAM就有128个“坑”,分别编号00H到7FH(0到127)每个“坑”可以存一个8位的二进制数,即“坑”的大小是一个字节。
如果这个指令一条一条地执行,有的MOV,有的跳跃,单片机就会开始“有条不紊”地运行。
在单片机运行过程中,一些中间变量被临时存储在这些凹坑中。
当然,程序也可以从这些坑中读取存储的数据,所以它又被称为数据存储器,它里面只暂存了“纯粹的数据”,没有程序(虽然程序也是二进制数)。。
它的读写速度比FLASH快,但掉电即丢失,相当于计算机的内存。。
我们观察MSC-51指令集就知道,只有对RAM区操作得数据移动指令,没有对ROM的操作指令。
现代单片机对片载Flash的擦写,往往是通过对寄存器的操作来实现的。
3. 指令
我们能自己发明指令吗?
不会吧!
开发单片机的公司的工程师,不仅要设计CPU,还要设计内部存储、内部总线等“外设”,使单片机能够运行,这就是所谓的“单片机”,而不仅仅是一个CPU。
每一个指令在这个小系统中到底产生什么效果,是这些工程师已经设计好的。
在没有C语言的时代,你想做具体的数学计算,就得把计算过程分解为一条一条的指令,然后通过指令来实现计算任务。
我们在使用芯片的时候,不能超越芯片公司规定的指令范围,随意发明指令。
因为硬件是已经设计好的,它是死的,它只能响应芯片公司规定的这些指令。
这就是我们开发时需要数据表和数据手册的原因,因为芯片的说明书都是人做的,所以我们在开发时,需要遵守开发者的规定。。
这是传统51内部ROM和RAM的根本区别。
意味着整体差异随机存储器
2024-09-04
抖音商城怎么开通先用后付服务
抖音商城怎么仅退款
抖音商城怎么开通微信支付吗
抖音商城怎么开通要求
2024-09-04
智慧港城app
牡丹直播app安装免费版官网
绿色资源网App下载安装 1.1.7
蜜桃视频传媒网站直接进入