1、项目五 存储系统设计任务1 并行存储器的扩展设计任务内容 利用存储器芯片6264设计一个外部RAM扩展系统,并完成数据的存取。学习目标1.了解单片机三总线接口2.掌握并行存储器芯片扩展的接口电路设计3.了解读写外部RAM、外部ROM的信号时序4.巩固C51中存储类型和存储区域的对应关系5.掌握C51中绝对地址的访问方法。知 识 点知识点一 三总线接口及其扩展性能知识点二 EPROM程序存储器概述知识点三 单片EPROM程序存储器的扩充知识点四 并行RAM的扩展知识点五 C51的指针知识点六 C51中绝对地址的访问知识点七 多片存储器的扩展 单片机通过三总线结构,即地址总线(单片机通过三总线结构
2、,即地址总线(ABAB)、数据总线()、数据总线(DBDB)、控制总线()、控制总线(CBCB),进行系统扩展。进行系统扩展。知识点一 三总线接口及其扩展性能1 1地址总线(地址总线(ABAB)地址总线用来传送存储单元或外部设备的地址。地址总线用来传送存储单元或外部设备的地址。AT89C51 AT89C51由由P0P0口提供低口提供低8 8位地址线。由于位地址线。由于P0P0口同时又作为数口同时又作为数据口,地址数据是分时控制输出,所以低据口,地址数据是分时控制输出,所以低8 8位地址必须用锁存位地址必须用锁存器锁存。也就是在器锁存。也就是在P0P0口加一个锁存器,锁存器的输出就是低口加一个锁
3、存器,锁存器的输出就是低8 8位地址。锁存器的锁存控制信号由单片机位地址。锁存器的锁存控制信号由单片机ALEALE控制信号提供,控制信号提供,在在ALEALE下降沿将低下降沿将低8 8位地址锁存。位地址锁存。地址总线高地址总线高8 8位由位由P2P2口直接输出。口直接输出。P0P0、P2P2口在作为地址总口在作为地址总线使用时就不能再用作一般的线使用时就不能再用作一般的I/OI/O口,这在系统扩展时一定要口,这在系统扩展时一定要注意。注意。地址总线的宽度是地址总线的宽度是1616位,其寻址范围是位,其寻址范围是216=64 KB216=64 KB,地址,地址范围是范围是0000H0000HFF
4、FFHFFFFH。知识点一 三总线接口及其扩展性能2 2数据总线(数据总线(DBDB)数据总线用来传送数据和指令码,数据总线用来传送数据和指令码,AT89C51AT89C51由由P0P0口提供数口提供数据线,其宽度为据线,其宽度为8 8位。位。3 3控制总线(控制总线(CBCB)控制线用来传送各种控制信息。控制线用来传送各种控制信息。AT89C51AT89C51用于系统扩展的用于系统扩展的控制线有控制线有/WR/WR、/RD/RD、/PSEN/PSEN、ALEALE、/EA/EA 。/WR/WR、/RD/RD 信号用于扩展片外数据存储器的读写控制。信号用于扩展片外数据存储器的读写控制。/PSE
5、N/PSEN用于扩展片外程序存储器的读控制。用于扩展片外程序存储器的读控制。ALE ALE的下降沿使的下降沿使P0P0口输出的地址锁存。口输出的地址锁存。/EA/EA用于选择片内或片外程序存储器。用于选择片内或片外程序存储器。/EA=0/EA=0时,只访问外时,只访问外部程序存储器;部程序存储器;/EA=1/EA=1时,系统从内部程序存储器开始执行程时,系统从内部程序存储器开始执行程序。序。知识点一 三总线接口及其扩展性能 目前程序和数据一般保存在单片机的片内程序存储器和数目前程序和数据一般保存在单片机的片内程序存储器和数据存储器中,早期的单片机,如据存储器中,早期的单片机,如80318031
6、等,由于内部没有程序存等,由于内部没有程序存储器或程序存储器和数据存储器容量小,而需要外部扩展。储器或程序存储器和数据存储器容量小,而需要外部扩展。51 51系列单片机的地址线是系列单片机的地址线是A0-A15A0-A15,共,共1616根,因此最大外部根,因此最大外部扩展范围是扩展范围是64KB64KB,程序存储器一般采用,程序存储器一般采用EPROMEPROM进行扩展,数据进行扩展,数据存储器一般采用存储器一般采用RAMRAM进行扩展。进行扩展。知识点二 EPROM程序存储器概述EPROM 27C1627C512EPROM 27C1627C512的芯片引脚配置图的芯片引脚配置图知识点二 E
7、PROM程序存储器概述引脚功能:引脚功能:A0A15 A0A15:地址线。:地址线。O0O7 O0O7:数据线。:数据线。/CE /CE:芯片片选端。低电平允许芯片工作,高电平时禁止:芯片片选端。低电平允许芯片工作,高电平时禁止工作。工作。/OE/OE/VppVpp:输出使能信号:输出使能信号/编程电压。正常操作时,低电平编程电压。正常操作时,低电平允许输出,通常与单片机的读控制信号相连。编程方式下,此允许输出,通常与单片机的读控制信号相连。编程方式下,此引脚接编程电压。引脚接编程电压。/PGM /PGM :编程脉冲输入端。:编程脉冲输入端。知识点二 EPROM程序存储器概述注意:(1)地址总
8、线的连接 (2)数据总线的连接 (3)存储器片选端的连接 (4)/OE端的连接知识点三 单片EPROM程序存储器的扩充注意:(1)地址总线的连接 (2)数据总线的连接 (3)存储器片选端的连接 (4)/OE、/WE端的连接知识点四 并行RAM的扩展 片外RAM的读写由单片机的/RD(P3.7)和/WR(P3.6)信号控制,而片外ROM的输出允许/OE端由单片机的读选通/PSEN信号控制。地址空间可以重叠。下图为片外扩展64KB EPROM和32KB RAM系统。知识点四 并行RAM的扩展 指针是C语言中一种重要的数据类型,合理地使用指针,可以有效地表示数组等复杂的数据结构,直接处理内存地址。K
9、EIL C51语言除了支持C语言中的一般指针外,还根据51系列单片机的结构特点,提供了一种新的指针数据类型存储器指针。KEIL C51支持一般指针和存储器指针。知识点五 C51的指针1.一般指针一般指针定义格式:数据类型 *存储区域 变量名;其中,数据类型是指针指向对象的数据类型,存储区域是指针本身的存储区域,缺省状态下则按照编译器指定的默认区域存放。例1:long *ptr;/定义ptr为一个指向long型数据的指针,而ptr本身则依存储模式存放例2:char*xdata Xptr;/定义Xptr为一个指向char型数据的指针,而Xptr本身则存放xdata区域中知识点五 C51的指针2.存
10、储器指针存储器指针 基于存储器的指针在说明时即可以指定指针本身的存储区域,也可以指定指针所指向变量的存储区域。存储器指针的定义格式如下:数据类型数据类型 存储区域存储区域1 *存储区域存储区域2 变量名;变量名;其中:“存储区域1”为指针所指向变量的存储区域;“存储区域2”为指针本身的存储区域。例1:char data*str;/定义str指向data区中的char型变量,其本身按默认模式存放例2:int xdata*data pow;/定义pow指向xdata区中的int型变量,本身存放在data区中知识点五 C51的指针 KEIL C51语言允许在程序中指定变量存储的绝对地址,常用的绝对地
11、址的定义方法有三种:采用关键字“_at_”定义变量的绝对地址;采用存储器指针指定变量的绝对地址;利用头文件absacc.h中定义的宏来访问绝对地址。知识点六 C51中绝对地址的访问1.1.采用关键字采用关键字_at_ _at_ 格式:数据类型 存储区域 标识符 _at_ 地址常数其中:“地址常数”为所定义变量的绝对地址,它必须位于有效的存储区域内。例1:int xdata FLAG _at_ 0 x8000;/定义int型变量FLAG存储在片外RAM中,首地址为0 x8000使用绝对变量时的注意点 绝对变量必须是全局变量,即只能在函数外部定义;绝对变量不能被初始化;函数及bit型变量不能用“_
12、at_”进行绝对地址定位。知识点六 C51中绝对地址的访问2.2.采用存储器指针采用存储器指针 方法是先定义一个存储器指针变量,然后对该变量赋以指方法是先定义一个存储器指针变量,然后对该变量赋以指定存储区域的绝对地址值。定存储区域的绝对地址值。例例1 1:char xdata char xdata*cx_ptr;/cx_ptr;/定义指向片外定义指向片外RAMRAM中中charchar类型变量的指针类型变量的指针char data char data*cd_ptr;/cd_ptr;/定义指向片内定义指向片内RAMRAM中中charchar类型变量的指针类型变量的指针cx_ptr=0 x2000
13、;/cx_ptr=0 x2000;/指针指针cx_ptrcx_ptr指向片外指向片外2000H2000H单元单元cd_ptr=0 x35;cd_ptr=0 x35;/指针指针cd_ptrcd_ptr指向片内指向片内35H35H单元单元*cx_ptr=0 xbb;cx_ptr=0 xbb;/对片外对片外2000H2000H单元赋值单元赋值bbHbbH*cd_ptr=0 xaa;cd_ptr=0 xaa;/对片外对片外35H35H单元赋值单元赋值aaHaaH知识点六 C51中绝对地址的访问3 3采用头文件采用头文件absacc.habsacc.h中定义的宏中定义的宏 在在KeilKeil C51
14、C51中,用中,用“#include#include ”即可使用即可使用其中定义的宏来访问不同存储区域的绝对地址。包括其中定义的宏来访问不同存储区域的绝对地址。包括CBYTECBYTE、DBYTEDBYTE、PBYTEPBYTE、XBYTEXBYTE、CWORDCWORD、DWORDDWORD、PWORDPWORD、XWORDXWORD,分别,分别对应对应codecode、datadata、pdatapdata、xdataxdata区的字节、字变量。区的字节、字变量。例例1 1:XBYTE0 x0002=0 x01;XBYTE0 x0002=0 x01;/对外部对外部RAMRAM的的0002H
15、0002H单元赋值为单元赋值为1 1知识点六 C51中绝对地址的访问 不管是不管是RAMRAM还是还是ROMROM,多片存储器的扩展只需对片选进行处,多片存储器的扩展只需对片选进行处理即可。常用的是线选法和地址译码法。理即可。常用的是线选法和地址译码法。知识点七 多片存储器的扩展1 1线选法线选法 例:例:27C1627C16是是2K2K字节的存储器,所以它的地址线是字节的存储器,所以它的地址线是A0A0A10A10,共,共1111根,根,与与1616根地址线的根地址线的AT89C51AT89C51相连,还剩五根高位地址线。这五根高位地址线可相连,还剩五根高位地址线。这五根高位地址线可以分别用
16、来连接以分别用来连接27C1627C16的片选端。这样最多可接五片的片选端。这样最多可接五片27C1627C16。每片都有自己。每片都有自己的寻址范围且地址不会重叠。如果不需要扩展,多余的高位地址线也可以的寻址范围且地址不会重叠。如果不需要扩展,多余的高位地址线也可以空着不连。空着不连。知识点七 多片存储器的扩展2 2地址译码法地址译码法 地址译码法只需在线选法的基础上加译码器就可以了,例如利用地址译码法只需在线选法的基础上加译码器就可以了,例如利用74LS13874LS138扩展存储器芯片时,最多能接八个芯片的片选端。扩展存储器芯片时,最多能接八个芯片的片选端。74LS13874LS138芯
17、片引芯片引脚和真值表如下图所示。脚和真值表如下图所示。知识点七 多片存储器的扩展例:采用例:采用27C1627C16扩展扩展3 3片外部程序存储器,画出原理图,写出各片外部程序存储器,画出原理图,写出各芯片地址范围。芯片地址范围。知识点七 多片存储器的扩展知识点七 多片存储器的扩展图中:图中:27C16 27C16(1 1)的地址范围是)的地址范围是0000H 0000H 07FFH07FFH;27C16 27C16(2 2)的地址范围是)的地址范围是0800H 0800H 0FFFH0FFFH;27C16 27C16(3 3)的地址范围是)的地址范围是1000H 1000H 17FFH17FFH。任务实施任务实施课后练习课后练习 应用关键字_at_、存储器指针、absacc.h中定义的宏三种方法,访问外部RAM,完成对特定绝对地址的存取操作。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。