第7章 MCS-51单片机 扩展存储器设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写选通信号。
7.2 读写控制、地址空间分配和外部地址锁存器 7.2.1 读写控制
RAM芯片/I/O接口芯片
RD MCS-51
WR
OE
WE
EPROM芯片
PSEN MCS-51
OE
7.2.2
★地址空间分配
概念:
选中某一单元必: “片选”+ “单元选择”
高位 地址作片选信号
常用的地址分配的方法有2种:线选法和译码法。
(1)74LS138(3~8译码器)
G1 G2 A G2 B 100时,译码器才工
作,见真值表 输入:C B A 输出: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 工作时,只有一个输出为0,其它 皆1
74LS138译码器真值表
G1 G2 A
输 G2 B
入 C B A
输 出 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
程序存储器所占的地址空间?
A15A14A13~A0 0 0 0000H~3FFFH
例2. 如何外扩1片EPROM 27256?
例3. MCS-51扩展4片27128?
解:128=64K×8 64K=214 剩2根,4片 2-4译码
7.5
静态RAM(SRAM)的扩展
7.5.1 常用的SRAM芯片
若64KB全是用16块4K芯片组成,则同问题1,需2个74LS138
注意:译码方案不唯一
7.3.3 外部地址锁存器 常用的有: 74LS373、8282、74LS573等。
功能和内部结构完全一样,只是引脚排列不同
D7 … D0
Q7
… Q0
G:锁存信号,高电平有效。当G为高电平时,外部 D7~D0选通到内部锁存器,负跳变 时,数 ALE 据锁存到锁存器中。 OE*: 输出允许,低电平有效,三态门打开,锁存 器中数据输出到Q7~Q0,当信号为高电平时 , Q7~Q0为高阻态
74LS373功能表
OE* 0 0 0 1
G 1 1 0 0
D 1 0 × ×
Q 1 0 不变 高阻态
74LS373与MCS-51 P0的连接
这章之后讲ROM RAM的扩展,
以讲例子为主,硬件看懂,会算地址+软件编程
7.4
EPROM的扩展 复习:自己看。采用只读存储器,非易失性。 (1)掩膜ROM 在制造过程中编程。成本较高,因此只适合于大批量 生产。 (2)可编程ROM(PROM) 用独立的编程器写入。但PROM只能写入一次,且不能 再修改。 (3)EPROM 电信号编程,紫外线擦除的只读存储器芯片。
R4R3 R0个 R2R1
WR1:
WAIT:
MOV DPL, R3 MOV DPH, R4 MOVX A, @DPTR ;取 INC DPTR MOV R3, DPL MOV R4, DPH MOV DPL, R1 MOV DPH, R2 MOVX @DPTR, A ;放 JNB P1.0, WAIT INC DPTR MOV R1, DPL MOV R2, DPH DJNZ R0, WR1 RET
只有1个DPTR指针,2处要用?
MOV DPTR ,#7000H MOV R0,#0
LOP: MOV A,R0 PUSH DPL PUSH DPH ;或先放R3R4中 MOV DPTR, #TAB MOVC A,@A+DPTR POP DPH POP DPL MOVX @DPTR, A INC DPTR INC R0 CJNE R0, #32, LOP HERE: SJMP HERE TAB: DB ……
( 2) 74LS139(双2-4译码器)
G 0时,BA Y3 Y2 Y1Y0
(3)例子: 要扩展8片8KB的RAM 6264(8K×8),如 何通过译码器把64KB空间分配给各个芯片?
解:6264:8K=213 3根地址线留下 8片
3-8译码
分析地址?
全译码方式,地址无重叠,64KB空间:0000H~FFFFH 地址连续
8.8 ATMEL89C51/89C55单片机的片内闪烁存储 器 (了解)
AT89C51/89C52/89C55是低功耗、高性能的片内 含有4KB/8KB/20KB闪烁可编程/擦除只读存储 器芯片上的FEPROM允许在线编程或采用通用 的编程器对其重复编程。
地址线 数据线
PGM*:编程脉冲 Vpp:编程电压 (+12V或+25V) Vcc:+5V。 GND:地。
CE :片选输入端 OE 输出允许控制端
一般不用
7.4.2 例子
例1. 如何外扩1片EPROM 27128?
需解决2个问题: 如何扩展? 空间地址?
解:128=64K×8 64K=214 A0~A13
第7章 MCS-51单片机扩展存储 器的设计
7.1 概述
1、MCS-51的系统扩展结构图
外部存储器的扩展(第7章) 系统扩展 I/O接口部件的扩展(第8章) 通过系统总线扩展
AB
系统总线
DB CB
任务
2 、 构造系统总线
图 MCS-51 扩展的三总线
理解: P0口是A7~A0和D7~D0的复用线,用地址锁存器实 现复用,地址锁存器一般采用74LS373 P0口送出的低8位有效地址信号是在ALE(地址锁存 允许)信号变高的同时出现,在ALE 由高变 低时,将A0~A7锁存到74LS373中。
1. 线选法
直接利用系统的高位地址线作为存储器芯片(或I/O接口芯 片)的片选信号。
优点: 缺点:
例: 某一系统,需要外扩8KB的EPROM(2片2732), 4KB的RAM(2片6116),这些芯片与MCS-51单片机地址 分配有关的地址线连线,电路如下图。
解:高位地址线P2.4~P2.7直接和各芯片片选信号CE*相连 分析地址:
(4)E2PROM( EEPROM) 电信号编程,电信号擦除的ROM芯片。读写操作与RAM 几乎没有什么差别,只是写入的速度慢一些。但断 电后能够保存信息。 (5)Flash ROM 又称闪烁存储器,简称闪存。大有取代E2PROM的趋势。 7.4.1 常用EPROM芯片介绍 典型芯片是27系列产品,例如, 2764(8KB×8)、 27128(16KB×8)、27256(32KB×8)、27512 (64KB×8)。 “27”后面的数字表示其位存储容 量。
LOOP: MOVX @DPTR,A INC DPTR DJNZ R2,LOOP SJMP $
7.6 EPROM和RAM的综合扩展 例1 要扩展2片RAM(8KB×8)和2片EPROM (8KB×8)。RAM选6264,EPROM选2764。扩
展接口电路?(线选法和译码法)
分析:6264, 8K=213 2764, 8K=213 皆13根,剩3根,分别2片 因为RAM 和ROM是不同控制信号的,故可以用线选法, 多1根高位线片P2.5没有用 也可以用译码法,3-8译码(全译码)或者2-4译码 (部分译码)都可以
P2.7 P2.6 P2.5
地址范围 全0~全1 全0~全1 全0~全1
全0~全1
0000H~1FFFH源自文库
2000H~3FFFH
A15 A14 A13 A12~A0
IC1 IC2 IC3
IC4
0 0 0
0
0 0 1
1
0 1 0
1
4000H~5FFFH
6000H~7FFFH
译码法:地址连续,充分地址空间。
– MOVX @DPTR,A – MOVX @Ri, A
• 8031对2817A的读操作指令
– MOVX A, @DPTR – MOVX A, @Ri
以RAM对待
软件设计:8031对2817A进行写操作的子程序 WR1。被写入数据取自源数据区。 WR1的入口参数为: R0=写入的字节数 R1=2817A的低8位地址 R2=2817A的高8位地址 R3=源数据区的低8位地址 R4=源数据区的高8位地址
线选法图
P2.7 P2.6
注意各片选信号和控制信号(理解) 各芯片地址空间分配 ?
(P2.7=1,P2.6=0,P2.5随意,若取1) IC1、IC3地址范围:A000H~BFFFH共8KB IC2、IC4地址范围:6000H~7FFFH。 线选法地址不连续,地址空间利用不充分。
译码法,采用2-4译码器
2. 译码法
MCS-51的高位地址通过译码器的译码输出作为扩展芯片的 片选信号 最常用的译码器芯片:
3-8译码器:74LS138 双2-4译码器:74LS139 4-16译码器:74LS154
全译码:全部高位地址线都参加译码; 部分译码: 部分高位地址线参加译码, 存在部分地址空间相重叠的情况。
译码
地址不连续
例2:需要MCS-51的存储器空间有64KB,采用62128, 需要几片,如何扩展?
解:128, 16k,需要4片,16K=214 剩2根,,2-4译码,全译码法
分析地址?
P2.7 P2.6
地址范围
A15 A14
IC1 IC2 IC3 0 0 1 0 1 0
A13~A0
全0~全1 全0~全1 全0~全1
7.8 E2PROM的扩展 E2PROM:电可擦除可编程只读存储器(不挥发性 读写存储器) 即可作数据存储器用(但掉电后数据不丢失), 又可作程序存储器用。 常用E2PROM: 2816/2816A、2817/2817A(2KB)、 2864(8KB) 例1.8031外扩2817A
• 8031对2817A的写操作指令
7.7、 外扩存储器软件设计
ROM:MOVC A, @A+DPTR
MOVC A, @A+PC
MOVX A,@DPTR 读RAM:
MOVX A, @Ri MOVX @DPTR,A 写RAM: MOVX @Ri, A 例3 编写程序:将程序存储器中以TAB为首址的32个单元的 内容依次传送到外部RAM以7000H为首地址的区域去。 ROM MCS-51 RAM
①地址总线的构造 P0+P2=A0~A15
(A8~A15) 不固定,需要用几根就 从P2口引出几条口线
②控制总线的构造。 a. ALE-- 低8位地址的锁存控制信号。 b. PSEN -- 扩展程序存储器的读选通信号 c. EA -- 内外ROM的选择。 d. RD和WR -- 扩展数据存储器和I/O口的读选通、
0000H~3FFFH 4000H~7FFFH 8000H~BFFFH
IC4
1
1
全0~全1
C000H~FFFFH 地址连续
例3:如何扩展1片62256?
例4 (软件)编写程序将片外数据存储器中7000H~
70FFH单元全部清零。
方法: 用DPTR作指针,控制循环:用计数器
MOV DPTR,#7000H MOV R2,#00H CLR A
引出问题2:
如何用74LS138把64K空间划分为每块2KB?
解:64KB=2KB×8块×4部分
4K=211 11根+译码3根,P2.7,P2.6未参加译码 P2.7—G1,P2.6—G2A*,改变P2.7,P2.6和G1,G2A*的连 接逻辑,即可改变选中的4个16KB空间的哪一个了。
小结: 若64KB全是用32块2K芯片组成,则同问题2,需4个74LS138
A15A14A13A12A11~A0
2732(1): 2732(2): 6116(1): 6116(2): 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 7000H~7FFFH B000H~BFFFH E800H~EFFFH D800H~DFFFH
地 址 不 连 续
线选法 优点: 电路简单,不需要地址译码器硬件,体积小,成本低。 缺点: 可寻址的器件数目有限,地址不连续。
典型型号有:6116、6264、62128、62256。
地址线 数据线
CE 片选输入端 OE WE
输出允许 写允许
7.5.3 例子
例1:如何扩展3片6264?
线选法 8K=213 剩3根,3片 可线选法 也可译码法
IC1 IC2 IC3
A15A14A13 A12~A0 地址范围 1 1 0 全0~全1 C000H~DFFFH 1 0 1 全0~全1 A000H~BFFFH 0 1 1 全0~全1 6000H~7FFFH
引出问题1:
如何用74LS138把64K空间划分为每块4KB?
解:64KB=4KB×8块×2部分
4K=212 12根+译码3根,P2.7未参加译码 P2.7=0/1决定选择64KB的前32KB或后32KB
G1 74LS138
后32KB 8块4KB
前32KB 8块4KB
分析地址?
对本例:改变P2.7和G1的连接逻辑,即可改变前后32KB空间。
7.2 读写控制、地址空间分配和外部地址锁存器 7.2.1 读写控制
RAM芯片/I/O接口芯片
RD MCS-51
WR
OE
WE
EPROM芯片
PSEN MCS-51
OE
7.2.2
★地址空间分配
概念:
选中某一单元必: “片选”+ “单元选择”
高位 地址作片选信号
常用的地址分配的方法有2种:线选法和译码法。
(1)74LS138(3~8译码器)
G1 G2 A G2 B 100时,译码器才工
作,见真值表 输入:C B A 输出: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 工作时,只有一个输出为0,其它 皆1
74LS138译码器真值表
G1 G2 A
输 G2 B
入 C B A
输 出 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
程序存储器所占的地址空间?
A15A14A13~A0 0 0 0000H~3FFFH
例2. 如何外扩1片EPROM 27256?
例3. MCS-51扩展4片27128?
解:128=64K×8 64K=214 剩2根,4片 2-4译码
7.5
静态RAM(SRAM)的扩展
7.5.1 常用的SRAM芯片
若64KB全是用16块4K芯片组成,则同问题1,需2个74LS138
注意:译码方案不唯一
7.3.3 外部地址锁存器 常用的有: 74LS373、8282、74LS573等。
功能和内部结构完全一样,只是引脚排列不同
D7 … D0
Q7
… Q0
G:锁存信号,高电平有效。当G为高电平时,外部 D7~D0选通到内部锁存器,负跳变 时,数 ALE 据锁存到锁存器中。 OE*: 输出允许,低电平有效,三态门打开,锁存 器中数据输出到Q7~Q0,当信号为高电平时 , Q7~Q0为高阻态
74LS373功能表
OE* 0 0 0 1
G 1 1 0 0
D 1 0 × ×
Q 1 0 不变 高阻态
74LS373与MCS-51 P0的连接
这章之后讲ROM RAM的扩展,
以讲例子为主,硬件看懂,会算地址+软件编程
7.4
EPROM的扩展 复习:自己看。采用只读存储器,非易失性。 (1)掩膜ROM 在制造过程中编程。成本较高,因此只适合于大批量 生产。 (2)可编程ROM(PROM) 用独立的编程器写入。但PROM只能写入一次,且不能 再修改。 (3)EPROM 电信号编程,紫外线擦除的只读存储器芯片。
R4R3 R0个 R2R1
WR1:
WAIT:
MOV DPL, R3 MOV DPH, R4 MOVX A, @DPTR ;取 INC DPTR MOV R3, DPL MOV R4, DPH MOV DPL, R1 MOV DPH, R2 MOVX @DPTR, A ;放 JNB P1.0, WAIT INC DPTR MOV R1, DPL MOV R2, DPH DJNZ R0, WR1 RET
只有1个DPTR指针,2处要用?
MOV DPTR ,#7000H MOV R0,#0
LOP: MOV A,R0 PUSH DPL PUSH DPH ;或先放R3R4中 MOV DPTR, #TAB MOVC A,@A+DPTR POP DPH POP DPL MOVX @DPTR, A INC DPTR INC R0 CJNE R0, #32, LOP HERE: SJMP HERE TAB: DB ……
( 2) 74LS139(双2-4译码器)
G 0时,BA Y3 Y2 Y1Y0
(3)例子: 要扩展8片8KB的RAM 6264(8K×8),如 何通过译码器把64KB空间分配给各个芯片?
解:6264:8K=213 3根地址线留下 8片
3-8译码
分析地址?
全译码方式,地址无重叠,64KB空间:0000H~FFFFH 地址连续
8.8 ATMEL89C51/89C55单片机的片内闪烁存储 器 (了解)
AT89C51/89C52/89C55是低功耗、高性能的片内 含有4KB/8KB/20KB闪烁可编程/擦除只读存储 器芯片上的FEPROM允许在线编程或采用通用 的编程器对其重复编程。
地址线 数据线
PGM*:编程脉冲 Vpp:编程电压 (+12V或+25V) Vcc:+5V。 GND:地。
CE :片选输入端 OE 输出允许控制端
一般不用
7.4.2 例子
例1. 如何外扩1片EPROM 27128?
需解决2个问题: 如何扩展? 空间地址?
解:128=64K×8 64K=214 A0~A13
第7章 MCS-51单片机扩展存储 器的设计
7.1 概述
1、MCS-51的系统扩展结构图
外部存储器的扩展(第7章) 系统扩展 I/O接口部件的扩展(第8章) 通过系统总线扩展
AB
系统总线
DB CB
任务
2 、 构造系统总线
图 MCS-51 扩展的三总线
理解: P0口是A7~A0和D7~D0的复用线,用地址锁存器实 现复用,地址锁存器一般采用74LS373 P0口送出的低8位有效地址信号是在ALE(地址锁存 允许)信号变高的同时出现,在ALE 由高变 低时,将A0~A7锁存到74LS373中。
1. 线选法
直接利用系统的高位地址线作为存储器芯片(或I/O接口芯 片)的片选信号。
优点: 缺点:
例: 某一系统,需要外扩8KB的EPROM(2片2732), 4KB的RAM(2片6116),这些芯片与MCS-51单片机地址 分配有关的地址线连线,电路如下图。
解:高位地址线P2.4~P2.7直接和各芯片片选信号CE*相连 分析地址:
(4)E2PROM( EEPROM) 电信号编程,电信号擦除的ROM芯片。读写操作与RAM 几乎没有什么差别,只是写入的速度慢一些。但断 电后能够保存信息。 (5)Flash ROM 又称闪烁存储器,简称闪存。大有取代E2PROM的趋势。 7.4.1 常用EPROM芯片介绍 典型芯片是27系列产品,例如, 2764(8KB×8)、 27128(16KB×8)、27256(32KB×8)、27512 (64KB×8)。 “27”后面的数字表示其位存储容 量。
LOOP: MOVX @DPTR,A INC DPTR DJNZ R2,LOOP SJMP $
7.6 EPROM和RAM的综合扩展 例1 要扩展2片RAM(8KB×8)和2片EPROM (8KB×8)。RAM选6264,EPROM选2764。扩
展接口电路?(线选法和译码法)
分析:6264, 8K=213 2764, 8K=213 皆13根,剩3根,分别2片 因为RAM 和ROM是不同控制信号的,故可以用线选法, 多1根高位线片P2.5没有用 也可以用译码法,3-8译码(全译码)或者2-4译码 (部分译码)都可以
P2.7 P2.6 P2.5
地址范围 全0~全1 全0~全1 全0~全1
全0~全1
0000H~1FFFH源自文库
2000H~3FFFH
A15 A14 A13 A12~A0
IC1 IC2 IC3
IC4
0 0 0
0
0 0 1
1
0 1 0
1
4000H~5FFFH
6000H~7FFFH
译码法:地址连续,充分地址空间。
– MOVX @DPTR,A – MOVX @Ri, A
• 8031对2817A的读操作指令
– MOVX A, @DPTR – MOVX A, @Ri
以RAM对待
软件设计:8031对2817A进行写操作的子程序 WR1。被写入数据取自源数据区。 WR1的入口参数为: R0=写入的字节数 R1=2817A的低8位地址 R2=2817A的高8位地址 R3=源数据区的低8位地址 R4=源数据区的高8位地址
线选法图
P2.7 P2.6
注意各片选信号和控制信号(理解) 各芯片地址空间分配 ?
(P2.7=1,P2.6=0,P2.5随意,若取1) IC1、IC3地址范围:A000H~BFFFH共8KB IC2、IC4地址范围:6000H~7FFFH。 线选法地址不连续,地址空间利用不充分。
译码法,采用2-4译码器
2. 译码法
MCS-51的高位地址通过译码器的译码输出作为扩展芯片的 片选信号 最常用的译码器芯片:
3-8译码器:74LS138 双2-4译码器:74LS139 4-16译码器:74LS154
全译码:全部高位地址线都参加译码; 部分译码: 部分高位地址线参加译码, 存在部分地址空间相重叠的情况。
译码
地址不连续
例2:需要MCS-51的存储器空间有64KB,采用62128, 需要几片,如何扩展?
解:128, 16k,需要4片,16K=214 剩2根,,2-4译码,全译码法
分析地址?
P2.7 P2.6
地址范围
A15 A14
IC1 IC2 IC3 0 0 1 0 1 0
A13~A0
全0~全1 全0~全1 全0~全1
7.8 E2PROM的扩展 E2PROM:电可擦除可编程只读存储器(不挥发性 读写存储器) 即可作数据存储器用(但掉电后数据不丢失), 又可作程序存储器用。 常用E2PROM: 2816/2816A、2817/2817A(2KB)、 2864(8KB) 例1.8031外扩2817A
• 8031对2817A的写操作指令
7.7、 外扩存储器软件设计
ROM:MOVC A, @A+DPTR
MOVC A, @A+PC
MOVX A,@DPTR 读RAM:
MOVX A, @Ri MOVX @DPTR,A 写RAM: MOVX @Ri, A 例3 编写程序:将程序存储器中以TAB为首址的32个单元的 内容依次传送到外部RAM以7000H为首地址的区域去。 ROM MCS-51 RAM
①地址总线的构造 P0+P2=A0~A15
(A8~A15) 不固定,需要用几根就 从P2口引出几条口线
②控制总线的构造。 a. ALE-- 低8位地址的锁存控制信号。 b. PSEN -- 扩展程序存储器的读选通信号 c. EA -- 内外ROM的选择。 d. RD和WR -- 扩展数据存储器和I/O口的读选通、
0000H~3FFFH 4000H~7FFFH 8000H~BFFFH
IC4
1
1
全0~全1
C000H~FFFFH 地址连续
例3:如何扩展1片62256?
例4 (软件)编写程序将片外数据存储器中7000H~
70FFH单元全部清零。
方法: 用DPTR作指针,控制循环:用计数器
MOV DPTR,#7000H MOV R2,#00H CLR A
引出问题2:
如何用74LS138把64K空间划分为每块2KB?
解:64KB=2KB×8块×4部分
4K=211 11根+译码3根,P2.7,P2.6未参加译码 P2.7—G1,P2.6—G2A*,改变P2.7,P2.6和G1,G2A*的连 接逻辑,即可改变选中的4个16KB空间的哪一个了。
小结: 若64KB全是用32块2K芯片组成,则同问题2,需4个74LS138
A15A14A13A12A11~A0
2732(1): 2732(2): 6116(1): 6116(2): 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 7000H~7FFFH B000H~BFFFH E800H~EFFFH D800H~DFFFH
地 址 不 连 续
线选法 优点: 电路简单,不需要地址译码器硬件,体积小,成本低。 缺点: 可寻址的器件数目有限,地址不连续。
典型型号有:6116、6264、62128、62256。
地址线 数据线
CE 片选输入端 OE WE
输出允许 写允许
7.5.3 例子
例1:如何扩展3片6264?
线选法 8K=213 剩3根,3片 可线选法 也可译码法
IC1 IC2 IC3
A15A14A13 A12~A0 地址范围 1 1 0 全0~全1 C000H~DFFFH 1 0 1 全0~全1 A000H~BFFFH 0 1 1 全0~全1 6000H~7FFFH
引出问题1:
如何用74LS138把64K空间划分为每块4KB?
解:64KB=4KB×8块×2部分
4K=212 12根+译码3根,P2.7未参加译码 P2.7=0/1决定选择64KB的前32KB或后32KB
G1 74LS138
后32KB 8块4KB
前32KB 8块4KB
分析地址?
对本例:改变P2.7和G1的连接逻辑,即可改变前后32KB空间。