您现在的位置是:首页 > 众测

外扩数据存储器原理图,关于C51单片机的外扩数据存储器的读写*作时序的问题

vcbgfh8RQW 2024-04-26

一、单片机对外扩存储器片选和单元选择是同时进行吗

单片机对外访问存储器无专门片选信号,要看你存储器芯片的片选怎么接了,若专门占用一个IO口作为片选,肯定不能和寻址同时进行,若用地址线的某一位用作片选,则输出地址的同时片选即有效了,但地址范围变小了,该地址线被片选端占用,就必须为0了由于每个片选都要占用了1根地址线,存储芯片较多时,一般用3/8译码器来决定选中的存储芯片

51单片机,P2.7-P2.5为地址线的高3位,接3/8译码器,可选8个芯片,剩下P2.4-P2.0和P0.7-P0.013根地址线,可寻址2^13即8K地址空间

即使如此,由于51的P0口是地址和数据复用的,P0先输出的是地址的低8位,P0第二次输出数据时P2口的高8位地址才输出

二、单片机p0口工作原理

P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。

下面,我们先就组成P0口的每个单元部份跟大家介绍一下:

先看输入缓冲器:在P0口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),大家看上图,上面一个是读锁存器的缓冲器,也就是说,要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为'读锁存器’端)有效。下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为'读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。

D锁存器:构成一个锁存器,通常要用一个时序电路,时序的单元电路在学数字电路时我们已知道,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。大家看上图中的D锁存器,D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。

对于D触发器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(也就是时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端Q非的。如果时序控制端CP的时序脉冲一旦到了,这时D端输入的数据就会传输到Q及Q非端。数据传送过来后,当CP时序控制端的时序信号消失了,这时,输出端还会保持着上次输入端D的数据(即把上次的数据锁存起来了)。如果下一个时序控制脉冲信号来了,这时D端的数据才再次传送到Q端,从而改变Q端的状态。

多路开关:在51单片机中,当内部的存储器够用(也就是不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器)时,P0口可以作为通用的输入输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为'地址/数据’总线使用。那么这个多路选择开关就是用于选择是做为普通I/O口使用还是作为'数据/地址’总线使用的选择开关了。大家看上图,当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为'地址/数据’总线使用的。

输出驱动部份:从上图中我们已看出,P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。

与门、与非门:这两个单元电路的逻辑原理我们在第四课数字及常用逻辑电路时已做过介绍,不明白的同学请回到第四节去看看。

前面我们已将P0口的各单元部件进行了一个详细的讲解,下面我们就来研究一下P0口做为I/O口及地址/数据总线使用时的具体工作过程。

1、作为I/O端口使用时的工作原理

P0口作为I/O端口使用时,多路开关的控制信号为0(低电平),看上图中的线线部份,多路开关的控制信号同时与与门的一个输入端是相接的,我们知道与门的逻辑特点是“全1出1,有0出0”那么控制信号是0的话,这时与门输出的也是一个0(低电平),与让的输出是0,V1管就截止,在多路控制开关的控制信号是0(低电平)时,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。

P0口用作I/O口线,其由数据总线向引脚输出(即输出状态Output)的工作过程:当写锁存器信号CP有效,数据总线的信号→锁存器的输入端D→锁存器的反向输出Q非端→多路开关→V2管的栅极→V2的漏极到输出端P0.X。前面我们已讲了,当多路开关的控制信号为低电平0时,与门输出为低电平,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。

三、51单片机外扩存储器时如何确定存储器的地址范围

51单片机外扩存储器时,用地址线确定存储器的地址范围。

用一个IO口的口涎作为数据存储器的片选信号。比如8051单片机,P2:P0口提供的地址A15~A0(实际是A12~A0)用来访问8K的数据存储器。

用单片机的P1口作为存储器的片选信号:P1.0接一个存储器的CS,P1.1接另一个存储器的CS,这样8个存储器正好用完P1口,当要访问其中一个时,只把相应的P1.x=0而其他为1,这样就可以了。

工作原理

存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。

主存的工作方式是按存储单元的地址存放或读取各类信息,统称访问存储器。主存中汇集存储单元的载体称为存储体,存储体中每个单元能够存放一串二进制码表示的信息,该信息的总位数称为一个存储单元的字长。

四、关于C51单片机的外扩数据存储器的读写操作时序的问题

c51存储器类型有bit

sbit

data

xdata

bdata

pdata

sfr

code等,可能不全面有遗漏

对应的物理存储器是:

bit,即位数据:数据存储器位寻址区,即20h~2fh的范围,共16个字节,16*8=128个位,位地址00h~7fh,连续的。

sbit:特殊功能寄存器中的位数据:只有能够被8整除的那些特殊功能寄存器中的各个位才能被称为sbit,位地址80h~ffh,不连续的,间断的。

data:数据区,对51为00h~7fh共128个字节,对52为00h~ffh,共256个字节,用mov寻址,前128用直接寻址或寄存器(r0~r7)寻址,后128用r0、r1间接寻址。

xdata:外部数据区,0000h~ffffh连续,用dptr间接寻址(movx指令)

bdata:位寻址去的字节,20h~2fh

sfr:特殊功能寄存器(80h~ffh),直接寻址

pdata:外部数据区,p2口保持数据,用r0r1间接寻址(movx指令)

code:程序存储器,用movc指令只读

文章版权声明:除非注明,否则均为典胜网原创文章,转载或复制请以超链接形式并注明出处。