2006-05-08 23:15:16
51单片机存储器的基本结构及工作原理
第一个问题:单片机的外部结构怎样呢?
拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们“新动力2004”单片机学习套件用的一块称之为89S51的芯片,下面我们就看一下如何给它连线。
1、 电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。
2、 振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按“新动力2004版”实验部份原理图接上即可。
3、复位引脚:按“新动力2004版”实验部份原理图中接法连好,至于复位是何含义及为何需要复要复位,复位章节中已做介绍。
4、 EA引脚:EA引脚接到正电源端。 至此,一个单片机就接好,通上电,单片机就开始工作了。
注:上述讲的是单片机最小应用系统图,朋友们在书让随便找本书都有,也以参考“新动力2004版”实验部份原理图。
这里我就不再画了。
第二个问题:单片机的工作任务分析
我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个引脚相连,否则单片机就没法控制它了,那么和哪个引脚相连呢?单片机上除了刚才用掉的5个引脚,还有35个,我们将这个LED和1脚相连。
按照“新动力2004版”实验部份原理图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们要能够控制,也就是说,我们要能够让1引脚按要求变为高或低电平。即然我们要控制1脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P1.0,这是规定,不可以由我们来更改。
名字有了,我们又怎样让它变--高--或变--低--呢?叫人做事,说一声就可以,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是CLR。因此,我们要P1.0输出高电平,只要写SETB P1.0,要P1.0输出低电平,只要写 CLR P1.0就可以了。
现在我们已经有办法让计算机去将P1.0输出高或低电平了,但是我们怎样才能计算机执行这条指令呢?总不能也对计算机也说一声了事吧。要解决这个问题,还得有几步要走。
第一步:计算机看不懂SETB CLR之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东西——数字。因此我们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为 (C2H,90H ),至于为什么是这两个数字,这也是由51芯片的设计者--INTEL规定的,我们不去研究。
第二步:在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具"编程器"。本站开发的“新动力2004版”集编程器和实验板于一体。大家可以参考一下,如想购买请进入看看!
我们将“新动力2004”学习套件与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图2,写入……好,拿下片子,把片子插入学习套件的实验板,接通电源……什么?灯不亮?这就对了,因为我们写进去的指令就是让P1.0输出高电平,灯当然不亮,要是亮就错了。现在我们再拨下这块芯片,重新放回到编程器上,将编缉区的内容改为(C2H,90H),也就是CLR P1.0,写片,拿下片子,把片子插进实验板,接电,好,灯亮了。因为我们写入的(CLR P1.0)就是让P1.0输出低电平的指令。这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就可以改变电路的输出效果。
第三个问题:单片机内部结构分析
我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM
下面分别介绍各组成部份硬件的结构,工作原理和操作方法:
存储器 :
8031单片机有4个存储器空间,分别用来安排4种不同功用的存储器:
一/内部数据存储器;二/特殊功能寄存器;三/程序存储器;四/外部数据存储器。
内部数据存储器和特殊功能寄存器集成于片内,程序存储器和外部数据存储器则安排在
片外,用接口电路与单片机连接。4种存储器中,除内部数据存储器和特殊功能寄存器是统一编址的除外,各存储器均分开编址,并用不完全相同的寻址方式来访问它们。
RAM,共128字节,地址范围为00H一7FH,见下图2。前32个单元(地址00H一1FH)称为寄存器区。其中,每8个寄存器形成-个寄存器组。具体说来:
寄存器0组 地址00H一07H
寄存器1组 地址08H一0FH
寄存器2组 地址10H一17H
寄存器3组 地址18H一1FH
图2 内部数据存储器结构
通过对特殊功能寄存器PSW中RS1、RS0两位的编程设置),可选择任一寄存器组为工作寄存器组,方法如下:
RS1 RSO 所选中的寄存器组
0 0 选中的寄存器0组
0 1 选中的寄存器1组
1 0 选中的寄存器2组
1 1 选中的寄存器3组
当某一组被设定成工作寄存器组后,该组中的8个寄存器,从低地址到高地址就分别称为Ro-R7,从而可以把它们用作通用寄存器,并可按寄存器寻址方式被访问。一旦工作寄存器组被指定后,另外三组寄存器则同其它数据RAM一样,只能按字节地址被予以读写。
字节地址20H到2FH称为位地址区,共有16个字节,计128位,每位都有相应的位地址,位地址范围为00H一7FH,见图3。通过位寻址,可以对各位进行位操作。由此可见,8031单片机有着相当出 {MOD}的位处理能力。
内部数据RAM中,既有字节地址,又有位地址,两者的地址范围都是00H一7FH,这在数据操作时应加以注意。内部数据RAM通常用来存放运算过程的中间值,并用作堆栈区。
程序存储器
MCS-51单片机具有64K字节的程序存储器空间。其中,8051或8751在片内各有4K字节的程序存储器ROM或EPROM,并处于这一空间的最低地址区。8031片内没有程序存储器,必须在外部扩展程序存储器才能构成单片机应用电路。扩展容量可为64K字节中的任一容量,并且常用EPROM或E2PROM的形式(扩展方法见第四章)。 程序存储器中的某些地址被固定地用于特定程序的入口地址:
地址 用途
0000H 复位操作后的程序入口
0003H 外部中断0服务程序入口
000BH 定时器0中断服务程序入口
0013H 外部中断1服务程序入口
001BH 定时器1中断服务程序入口
0023H 串行I/O中断服务程序入口
在编程时,通常在这些入口地址开始的二三个地址单元中,放入一条转移类指令,以使相应的程序在指定的程序存储器区域中生成。例如,从000阳地址单元开始,放入一条转移到3000H地址单元的转移类指令,定时器0的中断服务程序就可从3000H地址单元开始安排。又如,定时器l的中断服务程序非常短,不会占用到0023H地址单元,或者串行I/O中断根本就没被使用,那么001BH就可以直接作为定时器1中断服务程序的首地址,而不必安排转移类指令。
程序存储器用来存放固化了的用户程序,取指地址由程序计数器PC给出,PC具有自动加l的功能,从而在无转移类指令的条件下,指令被逐一执行。转移类指令可改变PC值,使程序得以转移。程序存储器中也可固化一片数据区,存放被查阅的表格和参数等。
外部数据存储器
外部数据存储器又称为外部数据RAM,当803l片内128个字节的数据RAM不能满足数量上的要求时,可通过总线端口和其它I/O端口扩展外部数据RAM(扩展方法见相关章节),其最大容量可达64K字节。外部数据RAM与内部数据RAM的功用基本相同,但前者不能进行堆栈操作。
当803l单片机同时外接有程序存储器和数据存储器时,两者的区别在于:程序存储器只有读操作而无写操作,且读操作信号由引脚PSEN直接提供;数据存储器则有读写操作,且由引脚信号RD和WR选通读写操作。对片内RAM和片外RAM操作的区别在于:片内RAM操作时无读写信号产生,片外RAM操作时则有读写信号(RD,WR)产生。上面是不同的存储器操作在硬件信号方面的区别,这些反映在符号指令上则是有着完全不同的符号形式和寻址方式.
存储器的数据操作
1.程序存储器的数据操作
只有读操作。除由PC直接寻址,以执行各条指令外,还可用FC或DPTR作变址寻址。例如,若DPTR=2000H,A=20H,则指令MOVC A,@A十DPTR完成了把程序存储器2020H单元中的内容送入A中的操作。这种数据操作方式通常用来查阅程序存储器中的数据表格。
2.外部数据RAM的数据操作
可进行读写操作。用DPTR或工作寄存器组中的Ro或R1作寄存器间接寻址。当用RO或R1作寄存器间接寻址时,由P2端口提供高8位地址,R0或R1提供低8位地址。 例1 MOVX A, @DPTR ;外部数据RAM中以DPTR为地址中的内容 ----A
例2 MOV P2, #20H ;数20H ----P2
MOV R0, #30H ;数30H ----R0
MOVX @R0, A ;A ---- 外部数据RAM中2030H单元
3.内部数据RAM的数据操作
可进行读写操作。按直接字节地址作直接寻址或用工作寄存器组中的R0或R1作寄存器间接寻址。
例1 MOV 35H,#64H ;数64H送入片内RAM35H单元
例2 MOV R0 ,#40H ;数40H ----R0
MOV A ,@Ro ;内部数据RAM中40H地址中的内容 ----A
4.特殊功能寄存器SFR的数据操作
可进行读写操作。只能用直接寻址方式对给出地址的SFR作数据操作。
例1 MOV P1 ,#55H ;数55H经P1端口输出
例2 MOV A ,P0 ;把Po端口上的数据输入到A
例3 MOV PSW,#10H ;数10H ----PSW,从而使RS1=1,RS0=O,实现了选中第2组寄存器为工作寄存器的操作(此操作还清掉了PSW其它各标志位)
5.位地址空间的数据操作
可进行读写操作。采用直接位寻址方式对位地址中的数据作位操作。
例1 SETB 20H ;"1" ----片内RAM20H位地址单元
创2 SETB EA ;"1" ----SFR中的EA位(由图可见,EA的位地址为AFH)
803l单片机4种存储空间的主要特点及数据操作方式可归纳如下表所示。关于数据操作方法,在下面的章节中还会详细讨论
8031的存储器特点及数据操作
容量
地 址
寻址方式
操作例子
字节地址
位地址 外部程序存储器
最大64KB
0000H~FFFFH
无
PC间址,DPTR问址
MOVC A,@A+DPTR外部数据存储器
最小64KB
0000H~FFFFH
无
P2Ri间址,DPTR间址
MOVX A,@R0;
MOVX @DPTR,A内部数据存储器
128字节
00H~7FH
00H~7FH
直接寻址,Ri间址,位寻址
MOV 50H,#32H,
MOV @R1,A
SETB 44H特殊功能寄存器
21字节
80H~FFH(不连续)
80H~FFH(不连续)
直接寻址,位寻址
MOV A,90H
CLR B0H需要指出的是,单片机中的存储器结构与数据操作方法,是应用单片机的基础,必须了解得十分清楚。
长期提供单片机编程器,单片机实验板和配套电子器材
SP-51A单片机实验板(带1602屏) 165元
SP-51pro单片机编程器: 98元SP-51B单片机实验板 108元
SP-51单片机仿真器: 108元SP-51K单片机实验板 108元
NSP单片机多功能编程器: 298元郑州超越单片机技术有限公司
郑州市郑东新区郑汴路白庄小区23号楼
TEL:0371--66160112(可接传真) 66160113(可接传真) 66160068
电子信箱: saxmcu@yahoo.com.cn