mcs51和80c51中有哪些可存取的单元,存取方式如何?它们之间的区别和联系有哪些

MCS-251微处理器的结构简介--中源单片机
常用单片机简介
当前位置&&中源单片机&&应用技术&&&&&&&&&
&&&&TOP853型编程器具有体积小巧,功耗低,可靠性高的特点,是专为开发51系列单片机和烧写各类存储器而设计的通用机型。
&&&&TOp853采用USB通用串行口与PC机连接通信,传输速率高,抗干扰性能好,可靠性极高,切无需外接电源,特别适合电池供电的笔记本电脑外出使用。
MCS-251微处理器的结构简介
一.新一代器件的性能
&&&&INTEL公司最早的嵌入式微处理器的8051差不多是五十年代前问世的,今天,8051依然拥有大量的用户和技术特许使用者。开创MCS251微处理器结构的INTEL公司使用先进的模块化技术,又研制了一种新的微处理器芯片,称之为MCS251结构(下称MCS251)。这一新的结构,为应用嵌入式微处理器的设计师提供了多种不同规格、性能,又易于设计的器件。由于MCS251结构采用了经改进的代码指令,其性能提高了十五倍,即便依然使用目前的MCS51微控制器代码,系统性能也可提高五倍。
&&&&新的MCS251结构提供的高性能和其它一些片基增强特性包括:增加了存储器的合装和寻址能力,低功耗,低噪声,有效的高级语言支持,一个增强指令集以及其它一些集成化性能。
&&&&该产品族将具有新的MCS251内核。此外,还包括:各种片基外设,存储器,输入和输出(I/O)端口以及总线接口单元(BIU)。
&&&&新结构最最重要的特点是:它与目前MCS-51系列器件的二进制代码、外引脚兼容。这意味着用户只需稍作一些开发,甚至不必再开发便可用MCS251替代原有的MCS-51微控制器,但系统的性能得到了提高。如下表所列。性能升级很方便,原来的软件投资也可以得到保护。
&&表1&&MCS251的性能和为用户带来的好处
&*流水线指令执行单元&*最小的指令执行时间为两个时钟单元
&*高性能&—使用MCS51代码,性能提高5倍&—使用MCS251代码,性能提高15倍
&*16位的内部代码总线
&*高的指令吞吐量,故在低时钟速率时降低了功耗和射频干扰
&*在MCS51指令集的基础上增加了&—16位/32位的数据传输,算术和逻辑指令&—寄存器—寄存器操作指令&—扩展的寻址模式&—改进的控制指令&—更大的寻址空间
&*性能提高&*提高了编程的灵活性&*缩短了代码的长度
&*与MCS51的二进制代码兼容
&*降低了开发成本,即保护了原来的软件投资&*易于作性能升级
&*寄存器化的CPU结构&*—40字节的通用目的寄存器集&*寄存器可按8/16/32位存取&*64kB字节的扩展堆栈空间
&*性能提高&*提高了编程的灵活性&*提高了C语言的代码效率
&*24位的线性寻址能力&*使之可对16M字节的代码、数据空间实行寻址
&*支持了要求有较大的代码和数据空间能力
二.CPU概述
&&&&中央处理器(CPU)是MCS251结构的内核部分。它包括:算术逻辑运算单元(ALU),指令执行顺序器,程序计数器和寄存器集(Register file)。它们均被连接到高速的源、目的总线上。CPU全部实行8位微控制器指令操作。CPU筑构在片基的三级流水线周围,使用典型的流水线技术执行指令。流水线处理的各环节包括:取指令,译码,形成地址,取数据及执行,回写。从芯片性能和设计复杂性两者之间进行权衡,三级流水线应是最好的解决办法。
三.存储器接口
&&&&CPU与外设、存储器和其它的片基功能单元的接口是通过内部指令和数据总线实现的。MCS251结构具备一组内部16位指令总线,它支持每一状态编码提取。还有一组8位的数据总线用作每一状态一字节的数据传输。MCS251结构一16M字节的地址空间,程序代码和数据差不多可挨着存放。16MB地址空间包括了片内和片外的访问,如何分配由片基存储器的大小决定。程序代码可以放在除去保留区域之外的任何位置。此外,对于程序代码的存放位置的进一步限制则因不同的器件而异。
&&&&程序代码究竟放在CPU的外部还是一部分在内一部分在外,则要根据片基的代码存储器容量而定。
&&&&数据存储器空间可以放在除去保留区域的16MB的任何范围内。它的最低的32个字节可作为单纯的数据存放区域,也可以作为4个寄存器组(每组8个通用目的寄存器)。所有MCS251的CPU中都有数据存储器空间,但是片基的数据存储器数量却因不同的型号器件而异。
&&&&针对开发和生产中的不同需求,从设计的灵活性考虑,MCS251芯片有一次性可编程(OTP)的工厂掩膜(ROM)的和无只读存储器(ROMless)的,不久即会有闪速存储器(Flash memory)的芯片问世。
&&&&MCS251微控制器结构支持额外的32个字节的通用目的寄存器,作为寄存集放在CPU里。NCS51微控制器结构中有4个寄存组,每组有8个通用寄存器,其中只能有一组(即8个字节)被规定作寄存器操作用。MCS251结构则不同,它的寄存器集可依照如下的方式访问。寄存器寻址:第0-15寄存器可按字节、字或双字(Dword)型寄存器寻址。第16-31寄存器可按字或双字型寄存器寻址。根据组合的情况,可能有16个字节寄存器、16个字寄存器和10个双字寄存器(见图1)。
四.新的指令集
&&&&MCS251的指令集提供给用户一些体现新结构优点而定义的指令,同时又保留了MCS51原有的所有指令.绝大多部分的MCS251指令均可按8、16位或32位操作数进行操作,这一特色使得采用高级语言,如C语言来开发MCS251变得更容易、有效。
&&&&指令集包括了数据指令、位指令和控制指令。数据指令处理8、16和有限的32位数据,位指令操作位,控制指令管理程序流。每种指令类型都有各自的寻址模式,不是所有的数据寻址模式都会用到控制指令,反之亦然。MCS251提供了如下几种寻址模式:
&&&&*寄存器寻址,指令规定了包括操作数的寄存器。
&&&&*立即寻址,指令包含了操作数。
&&&&*直接寻址,指令包含了操作数的地址。
&&&&*间接寻址,指令规定了包含操作数地址的寄存器。
&&&&*变址寻址,指令规定的寄存器与有符号偏移量的和即为操作数地址。
&&&&*相对寻址,指令包含了从下一条指令算起,隔一相对偏移量指到的目的地址。
&&&&*位寻址,指令包含了位地址。
五.中断概述
&&&&MCS251结构支持一个非屏蔽中断、一个陷阱指令中断(TRAP,即技术返回分析程序)和数目达62个可屏蔽中断源,用户可逐个选择每一个中断,并设置它的优先级。非屏蔽中断由硬件固定,始终为第二优先级,且永远是使能的,至于中断源的数目,不论是外部的,还是内部的,这要由具体的MCS251器件的型号决定。
&&&&MCS251结构与MCS51是代码兼容的。所以,MCS51的所有的指令对于MCS251全部通用。MCS51有四个分割的寻址空间,程序存储器、特殊功能寄存器和内、外数据存储器。MCS251则把程序存储器和数据存储器合到一块16MB的寻址空间中。这种地址映像对用户是透明的,作程序汇编时要注意。
&&&&MCS251的第一个商品化的产品是8CC251SB,(注:MCS251单片机现在已经发展到一个系列,有兴趣的读者可参阅章节中的内容——编者注),它的性能请参考其数据手册。MCS-51 单片机的存储器地址空间如何划分?各地址空间的地址范围和容量如何?
&当前上元教育宁波校
&&(建议使用IE浏览本网站/分辨率px)&&&&
&位置:&&&&&&&&& >> 正文
MCS-51 单片机的存储器地址空间如何划分?各地址空间的地址范围和容量如何?
作者:&&更新时间:&&点击次数:
关于MCS-51 单片机的存储器地址空间,讲起来,要用几页的篇幅。简单介绍如下:MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。--------片内RAM:地址范围是00H到7FH (52系列延伸到FFH)。其中00H到1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。对此区域,可以使用 R0~R7 来操作,代码短捷,但是,只有一个当前工作区是可以这样读写的。对此区域,也可以使用字节地址,来读写。--20H-2FH,共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。此区域,也可按照字节寻址,来读写。--30H-7FH,没有什么特色,只进行字节寻址。--80H-FFH,共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。对上述空间读写,必须使用 MOV 指令。--------片外RAM:片外RAM的地址范围是0000H到FFFFH,容量即为64KB。对片外RAM读写,必须使用 MOVX 指令。--------ROM:ROM的地址范围是0000H到FFFFH,容量即为64KB。其中0000~0FFFH,即4K,在片内,其它在片外。(对于8031,这64K的ROM,都在片外。)对ROM读出,必须使用 MOVC 指令。
&?&?&?&?&?&?&?&?&?&?
姓名:&&性别:男女
<input type="hidden" name="id" id="id" value="" />
&?&?&?&?&?&?&?&?&?&?
&?&?&?&?&?&?&?&?&?&?
&?&?&?&?&?&?&?&?&?&?
联系地址一:宁波市海曙区天一广场天一豪景(宁波大酒店正对面)3楼321室
联系地址二:宁波市海曙区天一广场天一豪景(宁波大酒店正对面)3楼328室
联系地址三:宁波市海曙区天一广场天一豪景(宁波大酒店正对面)3楼325室君,已阅读到文档的结尾了呢~~
2014年计算机控制与应用实验讲义&代码&#x5f;吉林大学09级控制,代码,讲义,吉林大学,实验讲义,计算机应用,2014年,09级,计算机
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
2014年计算机控制与应用实验讲义&代码_吉林大学09级
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口51单片机中的存储空间介绍[整理] - 电子狂飙的博客 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
51单片机中的存储空间介绍[整理]
热度 22已有 4193 次阅读 13:16
从数据存储类型来说,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中的指针方式访问的。汇编中的语句为:mox
ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)3、
xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。4、 pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx
ACC,@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里面改动不了。
bdata如何使用它呢?若程序需要8个或者更多的bit变量,如果你想一次性给8个变量赋值的话就不方便了,(举个例子说说它的方便之处,想更深入的了解请在应用中自己琢磨)又不可以定义bit数组,只有一个方法
char bdata MODE;sbit MODE_7 = MODE^7;sbit MODE_6 = MODE^6;sbit MODE_5 = MODE^5;sbit MODE_4 = MODE^4;sbit MODE_3 = MODE^3;sbit MODE_2 = MODE^2;sbit MODE_1 = MODE^1;sbit MODE_0 = MODE^0;8个bit变量MODE_n
就定义好了这是定义语句,Keilc 的特殊数据类型。记住一定要是sbit不能 bit MODE_0 =
MODE^0;赋值语句要是这么些C语言就视为异或运算
空间名称地址范围说明:1、DATAD:
00H~7FH片内RAM直接寻址区。2、BDATAD: 20H~2FH片内RAM位寻址区。3、IDATAI:
00H~FFH片内RAM间接寻址区。4、XDATAX:
0000H~FFFFH64KB常规片外RAM数据区。5、HDATAX:
0000H~FFFFFFH16MB扩展片外RAM数据区。6、CODEC:
0000H~FFFFH64K常规片内外ROM代码区。7、HCONST(ECODE)C:
0000H~FFFFFFH16MB扩展片外ROM常数区(对Dallas390可用作代码区)。8、BANK0~BANK31B0:
0000H~FFFFH::B31:0000H~FFFFH分组代码区,最大可扩展32X64KB ROM。8051单片机的存储器结构
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从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。&&&
当=1时,程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部ROM空间。&&&
当=0时,程序从外部存储器开始执行,例如前面提到的片内无ROM的8031单片机,在实际应用中就要把8031的引脚接为低电平。&&&
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:&&&
其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。&&&
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:&&&& 0003H—000AH
外部中断0中断地址区。&&&& 000BH—0012H 定时/计数器0中断地址区。&&&& 0013H—001AH
外部中断1中断地址区。&&&& 001BH—0022H 定时/计数器1中断地址区。&&&& 0023H—002AH
串行中断地址区。&&&
可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。从上面可以看出,每个中断服务程序只有8个字节单元,用8个字节来存放一个中断服务程序显然是不可能的。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,我们是在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。
下图是ROM的地址分配图:
从上图中大家可以看到,H,只有三个存储单元,3个存储单元在我们的程序存放时是存放不了实际意义的程序的,通常我们在实际编写程序时是在这里安排一条ORG指令,通过ORG指令跳转到从0033H开始的用户ROM区域,再来安排我们的程序语言。从0033开始的用户ROM区域用户可以通过ORG指令任意安排,但在应用中应注意,不要超过了实际的存储空间,不然程序就会找不到。
数据存储器
数据存储器也称为随机存取数据存储器。数据存储器分为内部数据存储和外部数据存储。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),片外最多可扩展64KB的RAM,构成两个地址空间,访问片内RAM用“MOV”指令,访问片外RAM用“MOVX”指令。它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。&&&
MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:数据存储器空间(低128单元);特殊功能寄存器空间(高128单元);这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。下面我们就来详细的与大家讲解一下:
低128单元:&&&
片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址,对片外数据存储器采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。也就是说在寻址片外数据存储器时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。
从上图中我们可以看到,8051单片机片内RAM共有256个单元(00H-FFH),这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。
1、通用寄存器区(00H-1FH)&&&
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如下表所示。惹程序中并不需要用4组,那么其余的可用做一般的数据缓冲器,CPU在复位后,选中第0组工作寄存器。
2、位寻址区(20H-2FH)片内RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如下表所示:
CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
3、用户RAM区(30H-7FH)在片内RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下的80个单元就是供用户使用的一般RAM区了,地址单元为30H-7FH。对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。
高128单元:(80H-FFH)前面提到,在片内的RAM中,高128位是专用寄存器区,因这节比较重要,所以我们单独的安排一节课跟大家介绍。下节课我们就重点介绍51单片机片内RAM的高128位,即专用寄存器区。
片外数据存储器在这里我们就先在介绍,在后面关于数据存储器扩展的章节中我们再详细介绍。
刚表态过的朋友 ()
作者的其他最新博客
评论 ( 个评论)
Powered by

我要回帖

更多关于 mcs51系列单片机 的文章

 

随机推荐