C51存储器类型与51单片机的物理区域

合集下载

51单片机:存储器

51单片机:存储器
特殊功 能寄存器
内部 RAM 0000 H
RAM (64K )
007FH
0000 H
数据存储器
引脚接为高电平时,CPU可访问内部和外部ROM,并 且程序自片内程序存储器开始执行,PC值超出片内 ROM容量时,会自动转向片外程序存储器中的程序。 引脚接为低电平时,CPU只 能访问外部ROM,无法使 用片内程序存储器。
(3)EPROM型(Erasable Programmable ROM,可擦除可编程 ROM),其典型外观标志是芯片上有一个紫外线擦除窗口。 这种存储器编程使用一定的直流电源(如+21V电压),而 擦除则用紫外线灯光照射芯片窗口(一般需15~30分钟), 重新编程后用不透明标签将窗口贴覆遮盖住即可。 MCS-51系列单片机8751的片内ROM以及27系列存储器 芯片都属于此类产品。 (4)E2PROM型(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。这种存储器可以直接用电擦 写,比较方便数据的改写,较新型只读存储器,编程速度较 快。擦除、写入和读出电压均为+5V。28系列存储器属于此 类产品。
(二) 存储器的分类
sk ROM 型 OTPROM型
ROM
半导体存储器 (Memory)
EPROM型 E2PROM型 Flash ROM型 SRAM
RAM
DRAM
(1)Mask ROM 型:掩膜ROM。其编程只能由制造商通过 半导体掩膜技术完成,用户无法改写,所以对用户而言, 它是严格意义的只读存储器。如8051中的4KB程序存储器 就是这一种,这种ROM适用于有固定程序且大批量生产的 产品中。 一次可编程ROM(One Time 型:一次可编程 (2)OTPROM型: Programmable ROM)。用户可通过专门设备对其一次性写 入程序,此后便不能改写。这种程序存储器可靠性很高, 适合于存放已调试成功的用户程序,投入规模生产,但调 试阶段不宜用。目前,国内外有很多单片机制造商提供片 内集有OTPROM的单片机产品,可供用户选择。

C51数据类型和存储空间

C51数据类型和存储空间

关于单片机存储器的问题,idata,data,badata,xdata,pdata,code,片内存储区,片外存储区关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机。

下面我给楼主讲解一下:51单片机之所以另类,是因为,他寻址内存的空间,不是靠总线,是用指令的方式。

51单片机有以下几个内存模块组成:1】ROM或者Flash,叫程序存储区,你写的程序是存在这里面的,上电后从这里面执行。

程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64K,所以很少有外扩片外Flash或者片外的Rom了,Flash或者Rom不管是片内还是片外的,只能用来定义常量,是用code来修饰,也就是说,用code来修饰的东西,在程序运行过程中,不能修改;2】RAM有------内部RAM的低128位(00-7F),对应C语言就是data,比如我定义一个变量,data unsigned char Var = 0;那么,这个Var变量就是放在内部的低128位Ram中-------内部RAM的高128位(80-FF),对应C语言就是idata,比如我定义一个变量,idata unsigned char Var = 0;那么,这个Var变量就是放在内部的高128位Ram中-------特殊功能寄存器(SFR)(80-FF),对应C语言就是Sfr比如我定义一个变量,Sfr unsigned char Var = 0x90;那么,这个Var变量就是放在内部的特殊功能寄存器中,这是你对Var操作,相当于操作一个特殊的寄存器,但是小心,不能随便定义Sfr变量,很危险------外部RAM 64K(0000-FFFF)外部的RAM可以扩展到65536个,但是前256个算是一页,这一页比较特殊,是用pdata来修饰的,当然,也可以用xdata来修饰。

除了第一页的256个以外的其他65280个空间,只能用xdata来修饰;回过头来讨论pdata和xdata,这两个都能修饰外部Ram的第一页,但是,Pdata只能修饰第一页,即最前面的256个外部Ram,那么,这最前面的256个到底用Pdata还是Xdata好的呢?答案:是Pdata,因为Xdata修饰的变量,用的是DPTR寻址,Pdata用的是R0和R1.DPTR因为是16位的,所以可以覆盖整个的64K外部Ram,R0和R1是8位,所以只能寻址最前面的256个,也就是外部Ram的第一页,但是,用R0寻址,比DPTR快一倍,代码也小的很多。

51单片机数据类型

51单片机数据类型

从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率。

在51系列中data,idata,xdata,pdata的区别:1、data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

2、idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:moxACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)3、 xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

4、 pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movxACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

当然现在有些51单片本身内部就有扩展的RAM区域,故在允许使用内部扩展RAM的时候使用xdata 和pdata并不影响P2和P0口。

单片机C语言unsigned char code table[] code 是什么作用?code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM 还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data 是存入RAM的意思。

程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data 区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom 里面改动不了。

51单片机存储器结构介绍

51单片机存储器结构介绍

51单片机存储器结构介绍MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。

程序内存ROM寻址范围:0000H ~ FFFFH容量64KBEA = 1,寻址内部ROM;EA = 0,寻址外部ROM地址长度:16位作用:存放程序及程序运行时所需的常数。

七个具有特殊含义的单元是:0000H ——系统复位,PC指向此处;0003H ——外部中断0入口000BH —— T0溢出中断入口0013H ——外中断1入口001BH —— T1溢出中断入口0023H ——串口中断入口002BH —— T2溢出中断入口内部数据存储器RAM物理上分为两大区:00H ~ 7FH即128B内RAM和SFR区。

作用:作数据缓冲器用。

下图是8051单片机存储器的空间结构图程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。

那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。

程序相当于给微处理器处理问题的一系列命令。

其实程序和数据一样,都是由机器码组成的代码串。

只是程序代码则存放于程序存储器中。

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。

对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。

强制CPU从外部程序存储器读取程序。

51单片机存储器内部结构

51单片机存储器内部结构

MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。

程序内存ROM寻址范围:0000H ~ FFFFH 容量64KBEA = 1,寻址内部ROM;EA = 0,寻址外部ROM地址长度:16位作用:存放程序及程序运行时所需的常数。

七个具有特殊含义的单元是:0000H ——系统复位,PC指向此处;0003H ——外部中断0入口000BH —— T0溢出中断入口0013H ——外中断1入口001BH —— T1溢出中断入口0023H ——串口中断入口002BH —— T2溢出中断入口内部数据存储器RAM物理上分为两大区:00H ~ 7FH即128B内RAM 和 SFR区。

作用:作数据缓冲器用。

下图是8051单片机存储器的空间结构图程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。

那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。

程序相当于给微处理器处理问题的一系列命令。

其实程序和数据一样,都是由机器码组成的代码串。

只是程序代码则存放于程序存储器中。

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。

对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。

强制CPU从外部程序存储器读取程序。

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单片机存储器结构介绍

MCS-51单片机存储器结构从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同的存储器空间的选通信号。

【程序内存ROM】寻址范围:0000H ~ FFFFH 容量64KBEA = 1,寻址内部ROM;EA = 0,寻址外部ROM地址长度:16位作用:存放程序及程序运行时所需的常数。

七个具有特殊含义的单元是:0000H ——系统复位,PC指向此处;0003H ——外部中断0入口000BH —— T0溢出中断入口0013H ——外中断1入口001BH —— T1溢出中断入口0023H ——串口中断入口002BH —— T2溢出中断入口【内部数据存储器RAM】物理上分为两大区:00H ~ 7FH(低128单元用户RAM 和高128单元SFR区)作用:作数据缓冲器用。

一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。

那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。

程序相当于给微处理器处理问题的一系列命令。

其实程序和数据一样,都是由机器码组成的代码串。

只是程序代码则存放于程序存储器中。

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。

(对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地。

强制CPU从外部程序存储器读取程序。

)对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC 值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。

MCS-51单片机的内部存储器

MCS-51单片机的内部存储器
② AC(PSW.6)——辅助进位标志位。在加减运算中,当有低4 位 向 高 4 位 进 位 或 借 位 时 , AC 由 硬 件 置 位 , 否 则 AC 位 被 清 “0”。在进行十进制数运算时需要十进制调整,此时要用 到AC位状态进行判断。
③ F0(PSW.5)——用户标志位。这是一个由用户自定义的标 志位,用户根据需要用软件方法置位或复位。例如用它来控 制程序的转向。
4. 堆栈类型
向上生长型和向下生长型。MCS-51的堆栈是向上生长的。
5. 堆栈使用方法
① 调用子程序或中断时,返回地址(断点)自动进栈。程序返回时, 断点再自动弹回PC。
② 使用专用的堆栈操作指令,进行进出栈操作。保护现场(PUSH); 恢复现场(POP)。
1.4 内部程序存储器
MCS-51单片机的程序计数器PC为16位,因此可以寻址的 地址空间为64KB。8051和8751单片机内部有4KB字节 ROM/EPROM程序存储器(0000H~0FFFH),1000H~FFFFH是外 部扩展程序存储器地址空间。而8052单片机内部有8KB ROM程 序存储器,同样可以扩展到64KB。在64KB程序存储器中,有6 个地址单元具有特殊功能。
3. 堆栈指示器
堆栈共有两种操作:进栈和出栈。
但不论是数据进栈还是出栈,都是对堆栈的栈顶单元进行的, 即对堆栈栈顶单元的写和读操作。为了指示栈顶地址,所以 要设置堆栈指示器SP。SP的内容就是堆栈栈顶的存储单元地 址。
MCS-51单片机由于堆栈设在内部RAM上,因此SP是一个8位 寄存器。实际上SP就是专用寄存器的一员。系统复位后,SP 的内容为07H,但由于堆栈最好在内部RAM的30H~7FH单元中 开辟,所以在程序设计时,应注意把SP值初始化为30H。SP的 内容一旦确定,栈顶的位置就确定了。

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存储器对电源的稳定性要求较高,断电会导致存储的数据丢失。

单片机原理及C51应用设计-理论篇-第3章

单片机原理及C51应用设计-理论篇-第3章

1.选择语句if
if语句是用来判断所给定的条件是否满足的一种操 作,它有两种基本形式。
(1) if(表达式) { 语句; }
(2) if(条件表达式) {语句1;}
else {语句2;}
3.2.3 常量与变量
1.常量 常量是在程序执行过程中其值不能改变的量。常量的数
据类型有整型、浮点型、字符型利字符串型等,C51编译器 还扩充了一种位(bit)标量。 (1)整型常量 十进制整数。如1234、-5678、0等。 十六进制整数。以0x开头的数是十六进制数,如0xl23。 (2)浮点型常量 浮点型常量有十进制表示形式和指数表示形式。 如0.3141。
3.1.1 C51与标准C的异同
1. C51虽然继承了标准C语言的绝大部分的特性,而且基本 语法相同。特定的硬件结构上有所扩展,如关键字sbit、 data、idata、xdata、code等。
2. 应用C51特别要注重对系统资源的理解,因为单片机的系 统资源相对PC机来说很贫乏,特别是对内部RAM,其中 的每一字节都要充分利用。
预处理命令 #include< >
函数说明 long fun1( );
float funຫໍສະໝຸດ ( );功能函数1 fun1( )
函数体
{
}
功能函数2 fun2( )
函数体
{
主函数 主函数体
} main( ) {
}
3.2.1 数据类型
表3-1 C51基本数据类型
3.2.2 运算符及表达式
表3-2 C51的运算符
3.2 C51程序设计基础
一般C语言程序具有如下的结构:
预处理命令 #include< >
函数说明 long fun1( );

填空

填空

1.单片机应用系统是由硬件系统和软件系统组成的。

2.除了单片机和电源外,单片机最小系统包括时钟电路和复位电路。

3.在进行单片机应用系统设计时,除了电源和地线引脚外,XTAL1、XTAL2、RST引脚信号必须连接相应电路。

4.MCS-51系列单片机的存储器主要有4个物理存储空间,即片内数据存储器、片内程序存储器、片外数据存储器、片外程序存储器。

5.MCS-51系列单片机的XTAL1和XTAL2引脚是时钟电路引脚。

6.MCS-51系列单片机的应用程序一般存放在程序存储器中。

7.片内RAM低128单元,按其用途划分为工作寄存器组、位寻址区、用户RAM区3个区域。

8.当振荡脉冲频率为12MHz时,一个机器周期为1us;当振荡脉冲频率为6MHz时,一个机器周期为2us.9.MCS-51系列单片机的复位电路有两种,即上电复位电路、按键复位电路。

10.输入单片机的复位信号需延续2个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作填空:1.在MCS-51系列单片机的4个并行输入|输出端口中,常用于第二功能的是:2.用C51编程访问MCS-51单片机的并行I|O端口时,可以按字节寻址操作,还可以按位操作。

3.一个C源程序至少应包括一个主函数main()。

4.C51中定义一个可位寻址的变量FLAG访问P3口的P3.1引脚的方法是:5.C51扩充的数据类型用来访问MCS-51单片机内部的所有特殊功能寄存器。

6.结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。

7.表达式语句由表达式加上分号组成。

8.if语句一般用做单一条件或分支数目较少的场合,如果编写超过3个以上分支的程序,可用多分支选择的switch语句。

9.while语句和do-while语句的区别在于:do-while语句是先执行、后判断,而while语句先判断、后执行。

10.下面的while循环执行了无限次空语句。

i=3;while(i!=0);11.下面的延时函数delay()执行了10000次空语句。

第二讲 常量与变量,C51数据的存储类型与8051存储器结构

第二讲  常量与变量,C51数据的存储类型与8051存储器结构

1 8 8 16 16 32 32 32 64 24
—— 1 1 2 2 4 4 4 8 3
存储空间0~65535
表2-1 C51数据类型的取值范围 数据类型的取值范围
2011-3-13 6
第二讲 常量与变量,C51数据的存储类型与8051 存储器结构
数据类型 char int long int short int unsigned int float double 常量举例 \n为转 义字符 21、123 、2100 、-234 a、\n、9 35000、-34 10、-12、90 10000、987、40000 123.23、4.34e-3 123.23、12312333、-0.9876234 表2-2 常量的数据类型举例

8
第二讲 常量与变量,C51数据的存储类型与8051 存储器结构
存储类型 data idata pdata xdata code 长度( ) 长度(bit) 8 8 8 16 16 长度( 长度(byte) ) 1 1 1 2 2 值域范围 0~255 0~255 0~255 0~65535 0~65535
2011-3-13

3
第二讲 常量与变量,C51数据的存储类型与8051 存储器结构 二、C51数据的存储类型(见P54):
图2-1 8051单片机存储器结构 单片机存储器结构
2011-3-13 4
第二讲 常量与变量,C51数据的存储类型与8051 存储器结构
双精度浮点型double位型bit字符型char整型int长整型long浮点型float数组类型array结构体类型struct共用体union枚举enum基本类型构造类型指针类型空类型nop数据类型2012913wwwscetcnet第二讲常量与变量c51数据的存储类型与8051存储器结构数据类型长度bit长度byte值域范围bit01unsignedchar0255signedchar128127unsignedint16065535signed3276832767unsignedfloat3204294967295signedfloat3221474836482147483647float321176e38340e386位数字double641176e38340e3810位数字一般指针24存储空间065535表21c51数据类型的取值范围2012913wwwscetcnet第二讲常量与变量c51数据的存储类型与8051存储器结构数据类型常量举例charint211232100234longint3500034shortint101290unsignedint1000098740000float12323434e3double123231231233309876234义字符表22常量的数据类型举例2012913wwwscetcnet第二讲常量与变量c51数据的存储类型与8051存储器结构存储类型与存储空间的对应关系data直接寻址片内数据存储区访问速度快128字节bdata可位寻址片内数据存储区允许位与字节混合访问16字节idata间接寻址片内数据存储区可访问片内全部ram地址空间256字节pdata分页寻址片外数据存储区256字节由movxri访问xdata寻址片外数据存储区64k字节有movxdptr访问code寻址代码存储区64k字节有movcdptr访问表23c51存储类型与mcs51单片机存储空间的对应关2

单片机原理及接口技术(C51编程)(第2版)-习题答案汇总

单片机原理及接口技术(C51编程)(第2版)-习题答案汇总

单片机答案第1章思考题及习题1参考答案一、填空1. 除了单片机这一名称之外,单片机还可称为或。

答:微控制器,嵌入式控制器。

2。

单片机与普通微型计算机的不同之处在于其将、、和三部分,通过内部连接在一起,集成于一块芯片上。

答:CPU、存储器、I/O 口、总线3. AT89S51单片机工作频率上限为 MHz.答:24MHz。

4。

专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低和提高 .答:成本,可靠性。

二、单选1。

单片机内部数据之所以用二进制形式表示,主要是A.为了编程方便B.受器件的物理性能限制C.为了通用性D.为了提高运算速度答:B2. 在家用电器中使用单片机应属于微计算机的。

A.辅助设计应用B.测量、控制应用C.数值计算应用D.数据处理应用答: B3. 下面的哪一项应用,不属于单片机的应用范围。

A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备答:C三、判断对错1. STC系列单片机是8051内核的单片机。

对12。

AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断源、1个定时器(且具有捕捉功能)。

对3. 单片机是一种CPU.错4。

AT89S52单片机是微处理器。

错5. AT89S51片内的Flash程序存储器可在线写入(ISP),而AT89C52则不能。

对6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。

对7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。

对8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP的长处。

对第2章思考题及习题2参考答案一、填空1. 在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为。

答:2µs2. AT89S51单片机的机器周期等于个时钟振荡周期。

C51单片机的存储器结构ppt课件

C51单片机的存储器结构ppt课件
当内部数据存储器不够用时,在单片机的总
线上可以最大扩展64K的RAM,可独立寻址,有公 用指令系统〔MOVX传送指令〕,不能用于数据的 运算及处置,所以仅有4条指令,两条读,两条写, 用于普通数据的存放,地址为0000H-FFFFH。寻 址方式采用存放器间接寻址的方式,如MOVX A , @DPTR.,指令中DPTR,开辟在特殊功能存放器 〔SFR〕中,是一个16位的数据存储器〔数据指针
图3-3 内部数据存储器构造
7FH
用户区
30H 2FH
位寻址区
20H 1FH
工作寄存 器区
00H
〔1〕任务存放器区〔00H~1FH〕
共32个单元,又分为4组,每组8个单元,都用 R0~R7表示,如图3-4所示,
1FH
R7
3组
18H
R0
17H
R7
2组
10H
R0
0FH
R7
1组
08H
R0
07H
R7
06H
3-5所示, 指令MOV A , @R0 操作表示。 可以用〔〔R0〕〕=(40H)=AAH表示。
40H 1 0 1 0 1 0 1 0 30H 2FH 20H 1FH 00H 0 1 0 0 0 0 0 0 R0
注:
★ 在存放器寻址中〔Rn〕,这4组存放器,由 用户运用中经过PSW中的RS1和RS0的设定,来确 定用户运用的组。
1000H 0FFFH
外部程序储 存器64K (ROM)
80H 7FH 内部数据
储存器
128B (SRAM) 00H
0000H
内部程序储 存器4K
(ROM)
0000H
★内部数据存储器和外部数据存储器相互之间独立编址,

(完整word版)单片机其应用技术(C语言版)考试题二

(完整word版)单片机其应用技术(C语言版)考试题二

一、单项选择题(每题1分,共15分)(1)单片机8051的/EA引脚()。

A、必须接地B、必须接+5V电源C、可悬空D、以上三种视需要而定(2)外部扩展存储器时,分时复用做数据线和低8位地址线的是()。

A、P0口B、P1口C、P2口D、P3口(3)使用单片机开发系统调试程序时,对源程序进行汇编的目的是()。

A、将源程序转换成目标程序B、将目标程序转换成源程序C、将低级语言转换成高级语言D、连续执行(4)下面叙述不正确的是()。

A、一个C源程序可以由一个或多个函数组成。

B、一个C源程序必须包含一个主函数main( )。

C、在C程序中,注释说明只能位于一条语句的后面。

(5)C程序总是从()开始执行的。

A、主函数B、主程序C、子程序D、主过程(6)最基本的C语言语句是()。

A、赋值语句B、表达式语句C、循环语句D、复合语句(7)MCS-51系列单片机的定时器T1用做计数方式时,采用工作方式2,则工作方式控制字为()。

A、60HB、02HC、06HD、20H(8)MCS-51系列单片机的定时器T0用做定时方式时,采用工作方式1,则初始化编程为()A、TMOD=0x01 B、TMOD=0x50C、TMOD=0x10D、TMOD=0x02(9)启动T0开始计数是使TCON的()。

A、TFO位置1B、TRO位置1C、TRO位置0D、TR1位置0(10)使MCS-51系列单片机的定时器T0停止计数的语句是()。

A、TRO=0;B、TR1=0;C、TR0=1;D、TR1=1;(11)LED数码管若采用动态显示方式,下列说法错误的是()。

A、将各位数码管的段选线并联B、将段选线用一个8位I/O端口控制C、将各位数码管的公共端直接连接在+5V 或者GND上D、将各位数码管的位选线用各自独立的I/O端口控制(12)共阳极LED数码管加反相器驱动时显示字符“6”的段码是()。

A、06HB、7DHC、82HD、FAH(13)MCS-51系列单片机串行口发送/接收中断源的工作过程是:当串行口接收或发送完一帧数据时,将SCON中的(),向CPU申请中断。

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,所以为一个字节。

C51存储器分类与特点

C51存储器分类与特点

片内外ROM
当单片机的EA端接低电平(接地) 时,只能使用片外程序存储器,其编址 为0000H~FFFFH,片内器,RAM) ,也叫主存,是与CPU直接交换数据的 内部存储器。它可以随时读写(刷新时 除外),而且速度很快,通常作为操作 系统或其他正在运行中的程序的临时数 据存储介质。RAM工作时可以随时从任 何一个指定的地址写入(存入)或读出 (取出)信息。它与ROM的最大区别是 数据的易失性,即一旦断电所存储的数 据将随之丢失。RAM在计算机和数字系 统中用来暂时存储程序、数据和中间结 果。
8051单片机内部有4KB的程序存储器,如果内部程序存储器不够用(或无 内部程序存储器),可以外接程序存储器。8051单片机最大可以外接容量为 64KB的程序存储器(ROM),它与片内4KB程序存储器统一编址。
片内外ROM
当单片机的EA端接高电平(接电源正极) 时,片内、片外程序存储器都可以使用,片内 4KB 程序存储器的编址为0000H~0FFFH, 片外64KB 程序存储器的编址为1000H~ FFFFH,片外程序存储器低4KB存储空间无法 使用。
片内外RAM
8051单片机内部有256字 节的数据存储器,如果内部数 据存储器不够用,可以外接数 据存储器。8051单片机最大可 以外接容量为64KB的数据存储 器(RAM),它与片内256字 节数据存储器分开编址。
片内外RAM
当8051单片机连接片外RAM时,片内RAM的00H~FFH存储单元地址与片外 RAM的0000H~00FFH存储单元地址相同,为了区分两者,在用汇编语言编程时, 读写片外RAM时要用“MOVX”指令(读写片内RAM时要用“MOV”指令),在 用C语言编程时,读写RAM时须先声明数据类型(内部数据或外部数据),若读写的 数据存放在片内RAM中,要声明数据类型为内部数据类型(如用“data”声明),若 读写的数据存放在片外RAM中,应声明数据类型为外部数据类型(如用“xdata”声 明),单片机会根据声明的数据类型自动选择读写片内或片外RAM。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51 存储器类型与51 单片机的物理区域
1、data 区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data 区内,比如for 循环中的计数值。

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

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

当然静态局部
变量除外,其内存使用方式与全局变量相同;
扩展阅读:51 单片机的特殊功能寄存器(SFR)
3、确保你的程序中没有未调用的函数。

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

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

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

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

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

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

相关文档
最新文档