51单片机RAM 数据存储区学习笔记

合集下载

51单片机对外部ram的存取

51单片机对外部ram的存取

51单片机对外部ram的存取用#include "absacc.h"头文件,对于典型的电路接法,直接写ram=XBYTE[0x0000]或XB YTE[0x0000]=ram就能完成对ram的读写么,外部WR,OE,ALE信号就不用控制了么。

是不是先前要有什么设置。

最好举一个完整的例子说明一下,对外部的电路也做一下简单的说明,控制信号都是怎么接的,接法不一样对应的程序一改怎么变?初学者,渴望赐教。

提问者采纳是的。

对于典型电路接法,对应的WR、OE、ALE信号引脚接在RAM芯片对应引脚,单片机会自动配置各个引脚的时序,以完成XBYTE指令直接访问外部RAM的功能。

这里您所担心的对外部WR,OE,ALE信号的控制实际上是把典型电路接法与用单个引脚模拟端口外接RAM的使用方法混淆了。

比如89C2051单片机,其外部引脚没有P0口和WR、RD、OE、ALE这些引脚,某些情况下非得需要其配合外置RAM使用时,需要定义某些IO脚(譬如P1)模拟为数据接口、某些IO脚(譬如P1、P3)模拟为地址接口、某些IO模拟WR、RD、OE、ALE功能。

这个时候就需要控制了:先准备好要告诉RAM给它发送地址了(控制模拟ALE那个引脚的电平),然后控制模拟WR的那个引脚,准备告诉RAM你是要给它写地址;然后往地址接口上放地址数据,准备告诉RAM读什么地址(控制模拟的P0、P2口);片选通知RAM来读取地址(模拟OE的那个引脚给片选电平,通常低电平为选中);等待RAM响应后,转换WR和RD的电平读出RAM在上述地址中存储的数据。

大致如此,你可以在相应的学习板或者自己搭建的板子上试试~。

单片机C语言 必知的数据存储与程序编写知识 附单片机应用编程知识介绍

单片机C语言 必知的数据存储与程序编写知识 附单片机应用编程知识介绍

一、五大内存分区内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

1、栈区(StaCk):FIFo就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。

里面的变量通常是局部变量、函数参数等。

2、堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。

如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

3、自由存储区:就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free 来结束自己的生命。

4、全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

5、常量存储区:这是一块比较特殊的存储区,它们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)code/data/stack内存主要分为代码段,数据段和堆栈。

代码段放程序代码,属于只读内存。

数据段存放全局变量,静态变量,常量等,堆里存放自己malloc或new出来的变量,其他变量就存放在栈里,堆栈之间空间是有浮动的。

数据段的内存会到程序执行完才释放。

调用函数先找到函数的入口地址,然后计算给函数的形参和临时变量在栈里分配空间,拷贝实参的副本传给形参,然后进行压栈操作,函数执行完再进行弹栈操作。

字符常量一般放在数据段,而且相同的字符常量只会存一份。

二、C语言程序的存储区域1、由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。

编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。

2、C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解单片机是一种集成了处理器、内存和外设等功能于一体的微电子器件,广泛应用于各种电子设备中。

其中,内部存储器是单片机的核心组成部分之一。

本文将详细介绍单片机内部存储器的结构和数据存取方法。

一、单片机内部存储器的结构单片机的内部存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)两部分。

1. 随机存取存储器(RAM)RAM是单片机内部的易失性存储器,用于存储数据、程序临时数据和运行时数据。

单片机内部的RAM可以根据存取速度和使用要求的不同,分为片内RAM 和片外RAM两种。

片内RAM是单片机芯片内部集成的存储器,速度较快。

它可以分为片内可读写RAM(RW-RAM)和片内只读RAM(RO-RAM)两种类型。

片内可读写RAM可以被程序读取和修改,存储媒介是电容或电子触发器。

而片内只读RAM则只能被程序读取,不能被修改。

片内RAM的容量相对较小,一般在几十到几百字节之间。

片外RAM是连接在单片机芯片外部的存储器,速度较慢。

它可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两种类型。

SRAM是基于触发器构建的,数据存储在触发器中,读写速度快且无需刷新。

DRAM则是基于电容构建的,存储数据需要定期刷新,但容量较大。

2. 只读存储器(ROM)ROM是单片机内部的非易失性存储器,用于存储程序和常量数据。

ROM的内容在出厂时就被写入,一般无法被程序修改。

单片机内部的ROM可以分为只读存储器(ROM)和可编程只读存储器(PROM)两种类型。

ROM存储器内容固定不变,其中包含了单片机的初始化程序和系统代码。

PROM存储器则可以通过特殊的编程操作烧写程序和数据,但一旦写入后无法擦除和修改。

这类存储器在生产流程中被用于定制特殊功能的单片机。

二、单片机内部存储器的数据存取方法单片机内部存储器的数据存取方法根据存储器的类型和连接方式而有所不同。

1. RAM的数据存取方法对于片内RAM,数据的存取可以通过直接读写特定的RAM地址来实现。

单片机存储器

单片机存储器

单片机存储器1. MCS-51单片机的存贮器有程序存贮器ROM和数据存贮器RAM 之分。

由于外部程序存贮器和外部数据存贮器的地址可以重迭,所以我们说MCS-51单片机的寻址空间为2×64KB=128KB ,不过要注意:“片外程序存贮器和片外数据存贮器,根据实际需要也可以合并成一个统一的地址空间,此时最大寻址空间为64KB而不是128KB了。

”对外部程序存贮器的写操作是由编程器完成,而对其读操作则是由读选通控制信号/PSEN( Program Store Enable)再配以读操作指令MOVC来完成。

也就是由MOVC指令产生信号/PSEN,从而对片外程序存储器进行读操作。

对外部数据存贮器的写操作是由写选通控制信号/WR再配以指令MOVX来完成,而对其读操作则是由读选通控制信号/RD再配以MOVX 来完成。

也就是由指令MOVX指令产生/WR或/RD信号,从而对片外RAM进行写或读操作。

2. 程序存贮器ROMMCS-51单片机中设有一个片内、片外程序存贮器选择控制信号/EA(External Access)。

MCS-51单片机程序存储器示意图如果使/EA=1,则片内、片外程序存贮器ROM统一编址为64KB。

系统复位后,将先执行片内存贮器ROM中的程序。

当PC中内容超过OFFFH或1FFFH时,将自动转到执行片外程序存贮器中的程序。

片内程序存储器空间为0000H~0FFFH或0000H~1FFFH,片外程序存储器空间的地址不能与片内程序存储器空间地址相重迭。

至于具体执行哪里的程序完全取决于PC值。

如果使/EA=0,则只执行片外程序存贮器的程序,其地址空间为0000H~FFFFH 。

换言之,如果片内无程序存贮器ROM或不想访问片内程序存贮器ROM,则必须使/EA=0 。

注意:当系统复位时PC内容为0000H ,这意味着程序的执行总要从0000H单元开始,但用户程序又不能从0000H开始存放。

这是因为在程序存储器中有7个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。

(最新整理)51单片机复习要点

(最新整理)51单片机复习要点

定时/计数器1低字节 TH0 8CH
定时/计数器1高字节 TH1 8DH
P1口
P1
90H
97
96 95 94
93
92 91 90
电源控制
PCON 87H SMOD
GF1 GF0 PD IDL
串行口控制
SCON 98H
SM0 SM1 SM2 REN TB8 RB8 TI RI
9F
9E 9D 9C 9B 9A 99 98
9
片内RAM的低128字节单元
分为三个区域:
①寄存器区( 00H~1FH )
4组寄存器区,0组~3组。每组8个寄
存单元(每单元8位),以R0~R7作寄存
单元名,用于暂存运算数据和中间结果。


用PSW中的两位PSW.4和PSW.3来选择其中一

组寄存器区。

位地址
② 位寻址区 ( 20H~2FH)
(最新整理)51单片机复习要点
2021/7/26
1
2021/7/26
2
8051的主要硬件资源有:
◆8位CPU; ◆片内带振荡器,频率范围为1.2~12MHz; ◆256字节片内数据存储器RAM; ◆4KB片内程序存储器ROM; ◆程序存储器的寻址范围为64KB; ◆片外数据存储器RAM的寻址范围64KB; ◆4个8位的并行I/O接口:P0、P1、P2、P3; ◆1个全双工的串行I/O接口,可多机通信; ◆2个16位定时器/计数器:T0、T1; ◆5个中断源。
14
MCS-51单片机的引脚及功能
2021/7/26
40个引脚可分为4部分:
2个主电源引脚 2个外接晶体引脚 4个控制引脚 32个I/O引脚

单片机的RAM存储器详解

单片机的RAM存储器详解

单片机的RAM存储器详解随着计算机技术的不断发展,单片机作为一种集成电路芯片,在嵌入式系统中得到了广泛的应用。

而在单片机中,RAM存储器是一种非常重要的组成部分,它承担着临时存储数据的功能。

本文将详细解析单片机的RAM存储器,包括其定义、分类、特性以及应用等方面。

一、RAM存储器的定义RAM(Random Access Memory)即随机存取存储器,它是一种电子数字式存储器,能够按任意顺序访问其中的存储单元。

与之相对应的是ROM(Read-Only Memory),只能读取而不能写入。

二、RAM存储器的分类根据存储单元内容的易失性,RAM存储器可以分为静态RAM (SRAM)和动态RAM(DRAM)两种。

1. 静态RAM静态RAM采用存储单元由触发器构成,存储单元内部无需再进行刷新操作。

它的特点是读写速度快,但占用的空间较大。

静态RAM广泛应用于高性能嵌入式系统,如通信设备、计算机内存等。

2. 动态RAM动态RAM的存储单元由电容构成,需要定期刷新来保持数据的稳定。

它的特点是存储单元内部简单,占用空间小,但读写速度较慢。

动态RAM主要应用于低成本的嵌入式系统,如消费电子产品中的视频游戏机、智能手机等。

三、RAM存储器的特性RAM存储器有以下几个主要特性:1. 随机读写:RAM存储器可以根据地址直接读写数据,不需要按顺序进行操作。

2. 数据易失性:RAM存储器是易失性存储器,即断电后存储的数据会丢失。

因此,在单片机使用RAM存储数据时,需要特别注意数据的备份和保护。

3. 存储密度高:RAM存储单元内部结构简单,实现的存储密度较高。

4. 读写速度快:相比于ROM存储器,RAM存储器的读写速度更快,适合对数据进行频繁读写的应用场景。

四、RAM存储器的应用RAM存储器在单片机中广泛应用于各种需要临时存储数据的场景,下面是一些常见的应用:1. 作为程序存储器:在单片机中,RAM存储器可以用作存储程序代码,这种方式被称为RAM执行。

51单片机之感悟篇一(RAM和ROM)

51单片机之感悟篇一(RAM和ROM)

51单片机之感悟篇一(RAM和ROM)已有 3924 次阅读2014-7-5 19:48|个人分类:51系列|单片机2014年6月21日第一次更新想来学习51单片机也有一年多了,我想我也能算基本入门了吧。

但对于RAM和ROM的感觉,一直模模糊糊,像明白又不是很明白,想请教别人,自己又问不出个所以然,就像吃个苍蝇一样难受。

最近在看嵌入式系统的时候,那灵感来了,犹如黄河之水破提而下,那就一个爽啊。

好了,废话太多了,说太多了。

众所周知,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以上两种类型可以快速的存取数据,常用来放临时性的传递变量或使用频率较高的变量。

C51存储器类型MCS-51单片机物理存储器区域

C51存储器类型MCS-51单片机物理存储器区域

C51存储器类型MCS-51单⽚机物理存储器区域1、 data区空间⼩,所以只有频繁⽤到或对运算速度要求很⾼的变量才放到data区内,⽐如for循环中的计数值。

2、 data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提⾼内存利⽤率。

当然静态局部变量除外,其内存使⽤⽅式与全局变量相同;3、确保你的程序中没有未调⽤的函数。

在Keil C⾥遇到未调⽤函数,编译器就将其认为可能是中断函数。

函数⾥⽤的局部变量的空间是不释放,也就是同全局变量⼀样处理。

这⼀点Keil C做得很愚蠢,但也没办法。

4、程序中遇到的逻辑标志变量可以定义到bdata中,可以⼤⼤降低内存占⽤空间。

在51系列芯⽚中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

定义⽅法是: bdata bit LedState;但位类型不能⽤在数组和结构体中。

5、其他不频繁⽤到和对运算速度要求不⾼的变量都放到xdata区。

6、如果想节省data空间就必须⽤large模式,将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

7、当使⽤到指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通⽤指针占⽤3个字节;⽽指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为: char data *p;。

还可指定指针本⾝的存放内存类型,如:char data * xdata p;。

其含义是指针p指向data区变量,⽽其本⾝存放在xdata区。

bit是在内部数据存储空间中 20H .. 2FH 区域中⼀个位的地址,或者 8051 位可寻址 SFR 的⼀个位地址。

code是在 0000H .. 0FFFFH 之间的⼀个代码地址。

data是在 0 到 127 之间的⼀个数据存储器地址,或者在 128 .. 255 范围内的⼀个特殊功能寄存器(SFR)地址。

51单片机存储器结构介绍

51单片机存储器结构介绍

51单片机存储器结构介绍单片机是一种微型电脑芯片,他能够实现数字信号的处理和控制。

而存储器是单片机的核心组成部分之一,用于存储程序指令和数据。

本文将介绍51单片机的存储器结构。

一、内部存储器1. 代码存储器(ROM)代码存储器是用来存放程序指令的地方,它通常具有只读的特点,因此称之为只读存储器(Read-Only Memory)。

在51单片机中,常见的ROM有EPROM、EEPROM和Flash。

其中,EPROM需要使用紫外线擦除后才能进行写入操作,而EEPROM和Flash则支持电子擦除和写入操作。

2. 数据存储器(RAM)数据存储器用于存储程序中的数据,可以进行读取和写入操作。

51单片机中的RAM分为内部RAM和外部RAM两种类型。

内部RAM 是静态随机存储器(SRAM),容量通常较小,但读取速度快。

而外部RAM则可以通过外部接口来扩展存储容量。

二、外部存储器除了内部存储器之外,51单片机还支持外部存储器的连接,以扩展存储容量。

1. 并行存储器并行存储器是指通过并行接口与单片机进行数据交换的存储器,常见的有静态随机存储器(SRAM)、动态随机存储器(DRAM)和闪存等。

并行存储器的访问速度较快,但通信线路和引脚较多,连接复杂。

2. 串行存储器串行存储器是通过串行接口与单片机进行数据交换的存储器,常见的有串行EEPROM和串行闪存等。

串行存储器相对于并行存储器来说,引脚和通信线路较少,连接较为简单,但访问速度相对较慢。

三、存储器扩展技术1. 存储器芯片选择在实际应用中,我们需要根据需求选择合适的存储器芯片。

不同的存储器芯片具有不同的特性,比如容量大小、访问速度、耗能情况等,需要根据具体需求进行选择。

2. 存储器接口设计单片机与存储器之间的通信需要通过特定的接口进行连接。

在设计存储器接口时,需要考虑接口的引脚数目、速度要求、稳定性等因素,并且保证接口与存储器芯片的电气特性匹配。

3. 存储器管理技术存储器管理是针对大容量存储器的一种管理方法,用于提高存储效率和数据存取速度。

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器51单片机是一种常见的嵌入式微控制器,具备程序存储器和数据存储器,广泛应用于各个领域。

程序存储器用于存储和执行程序,而数据存储器用于储存运行过程中的变量和数据。

本文将详细介绍51单片机的程序存储器和数据存储器的特点和使用方法。

一、程序存储器程序存储器是51单片机中用于存储程序代码的地方。

它通常在芯片内部,有多种形式,常见的有ROM(只读存储器)和Flash(闪存)两种。

1. ROM存储器ROM存储器可以被写入一次,之后不能再改变。

它通常用于存储经常使用的不变的代码,例如启动程序、中断向量表等。

ROM存储器具有较高的稳定性和可靠性,在操作过程中不易出错。

但是,由于其只能被写入一次,因此对于频繁需要修改的程序代码来说,使用ROM存储器并不方便。

2. Flash存储器Flash存储器是一种可擦写的存储器,它可以多次写入和擦除。

这使得在51单片机的开发过程中,可以方便地修改和更新程序代码。

Flash存储器的优点是灵活性高,容易更新,但相对而言,稳定性较差,可能会出现擦除错误或写入错误的情况。

在使用Flash存储器时,需要注意以下几点:(1)在写入过程中,应该保证电源的稳定性,避免写入过程中电压异常导致写入错误。

(2)应该合理规划Flash存储器的中存储空间的物理布局,以方便程序的定位和管理。

(3)由于Flash存储器的写入次数是有限的,因此要尽量减少对其频繁的擦写。

二、数据存储器数据存储器是51单片机中用于存储程序运行中的变量和数据的地方。

它可以读取和写入,是程序运行和数据处理的重要组成部分。

数据存储器通常分为RAM(随机访问存储器)和SFR(特殊功能寄存器)两种。

1. RAM存储器RAM存储器是一种易读写的存储器,其存储空间较大,可以存储较多的变量和数据。

RAM存储器的读写速度较快,对于频繁读写的数据可以更快地进行处理。

但是,RAM存储器对电源的稳定性要求较高,断电会导致存储的数据丢失。

第三讲 51单片机存储器及寻址方式

第三讲 51单片机存储器及寻址方式

定寻址方式时,应考虑到需要和可能。80C51
系列单片机指令系统中共有以下7种寻址方式。
1、立即寻址
立即寻址是指在指令中直接给出操作数。出现在指 令中的操作数称为立即数,将这种寻址方式称为立即 寻址,在立即数前面加前缀“#”。 例如: 指令 MOV A,#3AH 其中3AH就是立即数, 功能是把8位立即数3AH送入累加器。
direct 内部的8位地址,既可以指片内RAM的低128个单元地址,也
rel
DPTR bit
相对转移指令中的偏移量,为8位带符号数。
地址寄存器,16位。 片内RAM (包括特殊功能寄存器)中的直接寻址位。
二、寻址方式和寻址空间
执行任何一条指令都需要使用操作数。寻 址方式就是在指令中用于说明操作数所在地址 的方法。 寻址方式越多,计算机的功能就越强,灵 活性越大,指令系统也就愈加复杂。因此在设
二、数据存储器
特殊功能寄存器区: 简写为SFR(Special Function Register) 功能:管理各功能器件,如定 时器、串行口、中断系统、外 围芯片等;用户通过对SFR编 程可方便地管理所有功能部件。

FFH 用户RAM区 SFR区 (仅89S52有) 80H 7FH FFH F0H E0H D0H CDH CCH CBH CAH C9H C8H B8H B0H A8H A6H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 85H 84H 83H 82H 81H 80H
能是把片内RAM中 3AH单元内的数据传送给累加器A。
2、直接寻址
直接寻址方式只能给出8位地址,因此,这种寻址 方式的寻址范围只限于片内RAM,具体地说: (1) 低128单元,在指令中直接以单元地址形式 给出。 (2) 特殊功能寄存器,这时除可以单元地址形式 给出外,还可以寄存器符号形式给出。虽然特殊功能 寄存器可以使用符号标志,但在指令代码中还是按地 址进行编码的。 应当说明的是,直接寻址是访问特殊功能寄存器的 惟一方法。

51单片机的存储器的RAM详解及仿真

51单片机的存储器的RAM详解及仿真

51单片机的存储器的RAM详解及仿真51单片机的存储器的RAM详解 (1)●传统MCS-51单片机内部数据存储器RAM结构 (1)内部数据存储器低128单元 (1)工作寄存器区 (2)位寻址区 (2)用户RAM区 (2)内部数据存储器高128单元 (3)外部数据存储器 (3)51单片机存储区分配如下: (3)●80C52(80C51增强型单片机)内部RAM结构 (4)内部数据存储器 (5)●ITE EC数据存储器RAM结构(8032单片机内核) (6)●Keil和Proteus设计仿真内部RAM读写 (7)●Keil和Proteus设计仿真外部RAM读写 (11)附录: (14)I:Keil data,bdata,idata,pdata,xdata,code存储类型与存储区 (14)II:Proteus仿真单片机Memory Model的选择问题 (16)III:C51绝对地址访问RAM (18)51单片机的存储器的RAM详解及仿真 传统MCS-51单片机内部数据存储器RAM结构内部数据存储器低128单元8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。

如图所示为低128单元的配置图。

工作寄存器区8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。

寄存器常用于存放操作数中间结果等。

由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。

4组通用寄存器占据内部RAM的00H~1FH单元地址。

在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。

到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定。

通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。

此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。

51单片机自学笔记(基础部分)

51单片机自学笔记(基础部分)

一、51单片机的硬件结构1. 硬件结构框图说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。

例如:未处理、查表、状态检测、中断处理等。

○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。

○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。

○4中断系统:5个中断源,2级优先权。

○5定时器/计数器:2个16位定时/计数器,四种工作方式。

○6串行口:1个全双工串行口,四种工作方式。

可进行串口通信,扩展并行I/O口,多机通信等。

○7P1、P2、P3、P0口:四个8位并行I/O口。

○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。

2. 引脚排列(1)电源及时钟引脚○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。

○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。

XTAL1(19脚):内部反相放大器的输入端。

若接晶振则应接地;XTAL2(18脚):内部反相放大器的输出端。

若采用外部时钟振荡器,该引脚接收时钟振荡信号。

(2)控制引脚○1RST/Vpd(9脚):复位信号输入,高电平有效。

单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。

平时应为0.5V低电平;Vpd为第二功能,备用电源输入端。

○2:ALE为地址锁存允许,正常工作时,ALE不断输出正脉冲信号。

当访问外部存储器时,ALE输出信号的负跳变沿用作低8位地址的锁存信号;PROG’为编程脉冲输入端。

○3PSEN’(Program Strobe Enable,29脚):程序存储器允许输出控制端。

低电平是外部程序存储器选通。

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器

一、51单片机的程序存储器结构1.内部结构单片机内部的程序存储器用于存储单片机工作时候的程序,单片机内部专门设置一个16位的程序计数器(PC),用于知识下一时刻单片机要执行的程序在ROM 空间中的地址位置,即可以存储64Kb空间大小。

程序存储器物理上可以分为片内程序存储器和片外存储器,不同单片机型号有不同的片内程序存储器空间大小。

例如8051单片机片内有4Kb的ROM,那当控制线取0时,PC访问的前4kb空间是片内的ROM;当控制线为0时候,PC访问的是片外的ROM。

2.程序存储器的7个特殊地址51单片机复位后,PC的内容是0000H,即为系统程序的启动地址。

51单片机内部有6个中断源,6个中断源介绍及地址如下所示:中断源之间只间隔8个存储单元,这是不足以存放中断程序的,所以这是中断入口地址,后续有中断服务函数。

二、51单片机的数据存储器数据存储器(RAM)存储单片机运行期间所需要的数据和临时生成的数据。

从物理上分为片内RAM和片外RAM(片外RAM是通过16位的地址总线访问,所以片外RAM也是64kb)。

1.片内数据存储器厂家根据不同的任务要求和需求定义不同的任务块,如下所示:工作寄存器组:一共有32个字节,也被称为通用寄存器,用于临时寄存8个信息,工作寄存器组分为4个组别,每组有R0-R7一共8个数据信息。

位寻址区:一共有16个字节,128位,该区域每一位可按照位于方式使用,这128位会重新分配工作地址。

一般RAM区域:用户编程可以使用的RAM,当然,前两个单元未使用的空间,用户也可以使用。

堆栈区和堆栈指针:先进后出、后入先出的原则进行管理的一段存储区域函数的调用就是一个堆栈操作,如下图所示:为实现堆栈“先入后出,后入先出”数据处理,51单片机内部设置了一个堆栈指针SP。

特殊功能寄存器:专用于控制、管理片内算术逻辑部件等功能模块工作,用户编程时可以直接给特殊功能寄存器设定值。

51单片机内部有包括PC在内19个特殊功能寄存器,如下所示:CPU专用寄存器:累加器A(E0H),寄存器B(F0H),程序状态寄存器PSW(D0H),堆栈寄存器SP(81H),数据指针DPTR(82H、83H)2.片外数据存储器51单片机内部RAM空间不够时候,就通过总线来扩展片外ram,最多可以扩展64KB.。

51单片机片内ram读写流程

51单片机片内ram读写流程

51单片机片内ram读写流程在51单片机中,对内部RAM(Random Access Memory)的读写流程主要包括以下几个步骤:一、读取操作流程:1. 地址定位:首先需要将待读取的内部RAM单元地址送入地址寄存器(通过`MOV`指令将地址值加载到`DPTR`或者`R0/R1`、`R2/R3`等间接寻址寄存器对中,对于低128字节直接寻址区,可以直接使用`ACC`配合`@Ri`或直接用`MOV`指令从指定地址读取)。

2. 读取数据:1)一旦地址被正确加载到地址总线,CPU会自动根据当前的地址去访问相应的RAM单元。

2)使用`MOVX A,@DPTR`指令可以从间接寻址区读取数据到累加器A(对于高128字节特殊功能寄存器区域,通常有特定的指令如`MOV A, direct`来读取)。

3)对于低128字节的数据存储区,可以使用`MOV A, @Ri`直接读取。

3. 数据处理:将读取到的数据进行所需的计算或逻辑操作。

二、写入操作流程:1. 地址定位:同样首先需要确定要写入数据的目标RAM单元地址,并将其送入地址寄存器。

2. 准备数据:确保要写入的数据已经存在于累加器A或其他可立即使用的寄存器中。

3. 执行写入:1)对于间接寻址区,使用`MOVX @DPTR,A`指令将累加器A中的数据写入到指定的RAM单元。

2)对于低128字节的数据存储区,使用`MOV @Ri, A`直接写入。

3)如果是向特殊功能寄存器区域写入,例如P1口寄存器,可以使用类似`MOV P1, A`这样的指令。

以上即为51单片机对片内RAM进行读写的基本流程。

在实际编程过程中,还需要结合具体的程序需求和内存分布情况灵活运用不同的寻址方式和指令集。

C51中代码和数据的存储区域和访问方式

C51中代码和数据的存储区域和访问方式

C51中代码和数据的存储区域和访问方式51单片机所拥有的内部资源十分有限,但是花样很多,它不仅体现在存储资源的物理分布,也体现在对他们的寻址。

51单片机的存储资源可以分为:程序存储器ROM,片内数据存储器RAM,片外数据存储器XRAM,特殊功能寄存器和FAR存储区。

这里着重介绍片内数据存储区和片外数据存储区。

片内数据存储区可读可写,用于动态数据的保存,访问速度很快。

如果用户欲将数据存于其中,可以用以下关键字进行说明:(1)data-指片内RAM的00H-7FH,容量为128B,通过直接寻址进行访问(2)idata-指片内RAM的00H-FFH,容量256B,通过@R0或@R1间接寻址进行访问(3)bdata-指片内RAM的20H-2FH(位寻址区),总的字节容量为16B片外数据存储区一般通过在系统外扩展RAM芯片来实现,总容量最多为64KB,可以用关键字xdata来声明存储于此的变量,它的范围为整个片外RAM,特别的存储区xdata的数据访问速度是最慢的。

2.3 编译模式编译模式就是编译器根据程序的代码规模和数据规模所采取的不同编译方法。

针对数据规模即变量总体规模的编译选项有如下3种:(1)small(小模式)—所有未说明存储区域的变量和重入堆栈将保存在data区(2)compact(紧凑模式)—此模式不常用(3)large(大模式)—所有未说明存储区域的变量和重入堆栈将保存在xdata区系统的默认设置为small,即小模式。

需要强调的是,不管整个程序采用的哪种编译模式,用户仍可以用关键字data,idata,xdata将程序中的某个或某些变量定义为此存储区域。

针对代码规模的编译选项和以上相同,而其默认为large,一般情况下所说的编译模式指的是数据规模。

2.4指针指针的本质是地址,它可以指向变量,代码(函数入口),在C51中指针的完整定义如下:所指数据的类型 [所指数据所在的存储区] * [指针本身所在的存储区] 指针变量名;注意“所指数据所在的存储区”决定了指针的长度,可以分为以下3类:(1)用data,idata等关键字修饰的指针为单字节指针,它要访问的存储空间小于等于256B,所以为一个字节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机RAM 数据存储区学习笔记
目录
51单片机RAM 数据存储区学习笔记 (1)
1.RAM keil C语言编程 (2)
2.片内数据存储区 (2)
(1) 工作寄存器区 (3)
(2)位寻址区 (3)
(3)数据缓冲区 (4)
(4)堆栈 (4)
(5)专用寄存器区 (4)
3.片外数据存储区 (4)
1.RAM keil C语言编程
RAM是程序运行中存放随机变量的数据空间。

在keil中编写程序,如果当前模式为small 模式,如果总的变量大小未超过128B,则未初始化的变量的初值默认为0.如果所有的变量超过单片机small模式下的128B大小,则必须对变量进行初始化,否则超过RAM大小变量的值是不确定的,在small模式下超过128B大小的变量也必须在编译器中重新设定存储器的存储模式。

在keil中,可选择small,compact,large三种方式存储数据变量:
在keil中可以用“TargetOptions”来配置这一项:
图1 选择数据存储模式
2.片内数据存储区
(1) 工作寄存器区
工作寄存器区位于片内数据存储器中的00H~1FH单元,共32字节( 如此说来每个单元是一个字节了),分成四组。

每组8个字节,分别记为R0~R7.
程序默认在0区工作寄存器组存放中间运算数据。

等待中断来时,中断数据工作寄存器组由0区切换到其它区域。

选择四组工作寄存器区的哪一组作为R0~R7由位于PSW寄存器的两位RS1,RS0来确定. RS1,RS0称为区开关或组开关,两位就可决定四种状态.
(2)位寻址区
用户存储区位于片内数据存储器中的020H~02FH单元,共16个字节,共128位,每个字节单元的位都有一个单独的地址,分别为00H-07H,如020H.1表示020H单元的bit[1]位。

020H~02FH单元可作为位寻址区。

这个范围内的存储单元最大的用处就是能进行位操作,在C语言中,只能用位操作运算符(&、|、^、~、<<、>>)来对字节数据进行位操作运算。

如果用汇编指令就可以直接对此片存储单片进行位操作。

如SETB, 020H.1 就将020H的bit[1]置为了1.
除了RAM此片能进行位寻址的用户存储区以外,还有一些特殊的功能寄存器( SFR )也能进行位寻址。

(3)数据缓冲区
51系列数据缓冲区地址为30H-7FH,共80字节。

只能字节寻址,不能位寻址。

由于工作寄存器和位寻址区,数据缓冲区是统一编址的,所以这三者都可以用作数据缓冲区。

(4)堆栈
栈:由系统自动分配释放,存局部值。

堆:一般由程序员分配和释放。

堆栈指针SP:8位寄存器,堆栈最大可达128单元,只可在片内RAM中进行堆栈操作。

堆栈作用:用来保存地址、数据信息、具有先进后出特性,也是一种能存放二进制数据的空间。

MC51堆栈采用满顶法向上生成的软件堆栈。

软件堆栈:借助SP进行控制操作。

堆栈向上生长:新压栈的数据成为堆栈顶。

堆栈向下生长:新压入的数据远离堆栈顶。

地址大小还得看存储方式。

(5)专用寄存器区
专用寄存器区,也称特殊功能寄存器区SFR
SPECIAL FUNCTIONREGISTER
寻址地址离散地分布在80H~FFH,共128字节的空间.而实际有用的只有21个字节,即在这一空间里只有18个专用功能寄存器,其中有3个专用功能寄存器占用了两个字节.SFR 主要用于片内硬件的管理,通常只能以字节为单位借助于MOV指令直接寻址,但也有一些专用功能寄存器可以位寻址。

包含程序状态字PSW、数据指针寄存器DPTR、端口地址P0-P0、其它专用寄存器(累加器
A、B)
3.片外数据存储区
片外RAM区:可寻空间为共64K 0000H~FFFFH,
总是使用MOVX类指令寻址
借助于工作寄存器R0或R1间接寻址时,可寻256字节
从片外RAM区取数据:MOVX A,@Ri i=0-1
向片外RAM区存数据:MOVX @Ri,A
借助16位的数据指针DPTR间接寻址,可寻64K字节:
从片外RAM区取数据:MOVX A,@DPTR
向片外RAM区存数据:MOVX @DPTR,A
区分是访问内部存储器还是外部存储器地址靠指令来区分。

相关文档
最新文档