众所周知,51内部的存储器分为数据存储器RAM和程序存储器ROM。以AT89c51为例,其中有128字节随机存储器(又称数据储存器RAM)和4K字节的只读存储器(又称程序存储器ROM)。
先说说这个4K字节的程序存储器或者说只读存储器,我们写的程序经过编译器编译成机器码都是存在这个区域,所以称为程序存储器;但单片机上电执行的时候,此区域内的数据只能读取而不能写入,他的只读存储器的名称从这而来。89c51的ROM采用的是FPEROM(Flash Programmable and Erasable Read Only Memory),具体工艺我也不太清楚,号称可以擦写1000次,也就是说你每天写30次,一个多月就报废了。
在说说128字节的随机存储器或者说数据存储器,程序运行过程中,一些中间变量存储在这个地方,也能从这个地方获取需要运算的值,所以称之为随机存储器,也称为数据存储器。个人觉得相当于计算机的内存,掉电丢失。
看看MSC-51指令就知道,所有的数据移动指令都是对RAM区操作的,就是因为无法改变ROM。
51内部的存储器在物理上可分为4个区域:片内ROM,片外ROM,片内RAM和片外RAM。从逻辑上可分为三个区域,64KB片内外统一编址的程序存储器(ROM),128字节或256字节的片内数据存储器(RAM),64KB片外数据存储器(RAM)。
对应的keil编译器关键字为:
data : 片内数据存储器(RAM)低128字节(51系列片内只有128字节,52系列有256字节)
bdata: 可位寻址的片内RAM
以上两种类型可以快速的存取数据,常用来放临时性的传递变量或使用频率较高的变量。
idata : 片内数据存储器(RAM)256字节
xdata: 片外数据存储器64KB
pdata: 片外数据存储器低256字节
code: 64KB程序存储器(如果变量定义在这个空间,后面就不能修改了,如果有语句改变它的值,编译器就会报错。)
此外,C51还有三种存储模式(这是在开发环境里面设置的):SMALL, COMPACT, LARGE
SMALL模式下,如果不做特别说明,参数及局部变量默认为data型,放在片内RAM128字节内,访问迅速。由于内部的RAM有限,如果变量过多,会导致频繁的使用寄存器,而使代码变的冗长。此时栈也在片内的RAM,栈长很关键,因为栈长依赖于不同函数的嵌套层数。
COMPACT:不做特别说明,参数及局部变量默认为pdata,栈空间在内部RAM。
LARGE:参数及局部变量默认为xdata,使用DPTR来寻址。访问效率低,此外这种数据指针不能对称操作。
全局变量会根据定义的类型或者存储的模式分配在相应的存储区内,有固定的地址,如果全局变量过多则会导致占用太多内存,处理速度变慢。
关键字:51单片机 ROM RAM
引用地址:
51单片机ROM与RAM
推荐阅读最新更新时间:2024-03-16 14:55
三大内存罕见同时缺货,三星DRAM再涨10%
DRAM 、NAND Flash和NOR Flash三大内存持续供货短缺,创下史上罕见同缺记录。 其中 DRAM 和NAND内存,更写下史上最长涨势。下面就随网络通信小编一起来了解一下相关内容吧。 内存业界表示,2008及2015年都出现过 DRAM 大涨,但多是因跌深或供货商发生爆炸意外所造成的供需失衡,且DRAM和NAND Flash产能会排挤,很少看到两大内存同涨。 这次DRAM和NAND内存两大内存缺货超乎预期且价格上涨,主要来自数据中心、移动设备及计算机三大领域应用需求强,前三大厂包括 三星 、SK海力士和美光等也未增建新厂,造成供货紧缩,DRAM与NAND同时大涨,涨这么久,已写下史上最长纪录。 除
[网络通信]
51单片机在片设备与中断(2)
串行通信要点 1、计算机与其外部设备、计算机与计算机之间的信息交换称为通信。通信的基本方式分为并行通信和串行通信两种。 (1)并行通信是指数据的各位同时进行传送的通信方式。其优点是数据传送速度快,缺点是需要多条传输线。 (2)串行通信是指数据的各位是一位一位地按顺序传送的通信方式。其突出优点是数据的传送只需要一对传输线,或利用电话线作为传输线,可极大地降低成本,特别适用于远距离通信。其缺点是数据传送速率较低。 2、串行通信可分为同步通信和异步通信两种方式。 (1)异步通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其中包括一个起始位以及紧接着的若干个数据位,最后是可能的校验
[单片机]
51单片机之串口通信 ---- 自学笔记
一、串口通信 1.1、计算机通信的基础 计算机通信:是将计算机技术与通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换,可分为两大类:并行通信与串行通信。 多微机系统的广泛应用与计算机网络技术的普及。 计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有两种方式:并行通信、串行通信。 在多微机系统以及现代测控系统中信息的交换多采用串行通信。 1.2、并行通信 将数据字节的各位用多条数据线同时进行传送。同时传送8个字节(下图 ) 串行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收困难。 1.3、串行通信 将数据字节分成一位一位的形式存,在一条传输
[单片机]
51单片机串口发送和中断接收程序
#include reg52.h void leddisplay(); // 数码管显示 void delayms(unsigned int k); // 延时 n ms void USART_SEND(unsigned char dat); // 串口发送子程序 unsigned char data ledxs ={16,16,16,16,16,0,0,18}; // 数码管显示缓冲区 unsigned char code tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0x
[单片机]
ARM处理器冲上80核心 7nm工艺,32个核心+八通道DDR4内存
这几年,面向服务器、数据中心的ARM处理器如雨后春笋般涌现,亚马逊、Ampere、Calxeda、博通(Cavium)、美满电子、高通、华为、富士通纷纷投入其中,不断拿出越来越出彩的产品。 Ampere Computing是一家由前Intel总裁Renee James创建的半导体公司,通过收购AppliedMciro做起了ARM处理器,还是NVIDIA ARM平台的重要合作伙伴。 Ampere目前的产品为eMAG,采用台积电16nm工艺制造,基于ARM v8.0指令集架构自研,最多32个核心,稳定加速频率可达3.3GHz,支持八通道DDR4-2667内存、42条PCIe 3.0、四个SATA 6Gbps,热设计功耗75-1
[嵌入式]
51单片机-LED部分(3)
8个发光二极管间隔200ms由上至下,再由下至上,再重复一遍,然后全部熄灭再次以300ms间隔全部闪烁5次,重复此过程 . C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include #include #define uchar unsigned char #define uint unsigned int uchar x, y, j, temp; void delayms(uint
[单片机]
【51单片机】考试例程|汇编实现
目录 中断3个程序 第一个程序 第二个程序 第三个程序 DA转换 Triangle Triangle2 矩形波 显示/键盘: 数码管的动态显示(C语言实现): 矩阵键盘(C语言实现) 加法、乘法 第二个例程 例程 例程 中断3个程序 第一个程序 ORG 0000H RESET: AJMP MAIN ORG 000BH AJMP IT0P MAIN: MOV SP, #60H; MOV TMOD, #01; ACALL PT0M0; HRER: AJMP HERE PT0M0: MOV TL0, #0CH MOV TH0, #0FEH SETB ET0; SETB EA; SE
[单片机]
美国政府建议开发者停止使用 C / C++,转用内存安全编程语言
2 月 29 日消息,美国政府近日发布了一份网络安全报告,呼吁开发人员停止使用容易出现内存安全漏洞的编程语言,例如 C 和 C++,转而使用内存安全的编程语言进行开发。这份报告由美国网络空间总监办公室 (ONCD) 发布,旨在落实美国总统拜登的网络安全战略,目标是“保护网络空间的基石”。 内存安全指的是程序在访问内存时能够避免出现错误和漏洞,例如缓冲区溢出和悬空指针。Java 由于其 runtime 错误检测功能,被认为是一种内存安全的语言。然而,C 和 C++ 允许直接操作内存地址,并且缺乏边界检查,容易出现内存安全问题。 报告援引微软和谷歌的研究数据,指出超过 70% 的安全漏洞都与内存安全问题有关。报告还引用了美国网络安全和
[嵌入式]