第 9章 存储器扩展
8 MCS-51单片机的系统扩展
8.1 概述
8.2 程序存储器的扩展
8.3 片外数据存储器的扩展
8.4 I/O口扩展
8.5 综合功能扩展第 9章 存储器扩展
MCS-51单片机最小应用系统
P0
P1
P2
P3
+5V
+5V
EA
8051
8751
XTAL1
XTAL2
8
8
8
8
8051/8751最小应用系统第 9章 存储器扩展
8.1 概述单片机系统扩展的方法有并行扩展法和串行扩展法 。
并行扩展法 是利用单片机的三总线进行扩展 。 并行扩展法接线较多,但速度较快 。
串行扩展法 是指利用 SPI三线总线和串行总线扩展 。
串行扩展法的优点是接口器件体积小,减小空间和成本 。 但是串行接口器件速度较慢,在高速应用的场合,还是并行扩展法占主导地位 。
第 9章 存储器扩展第 9章 存储器扩展
8.1.1 片外总线结构
AB,DB,CB
8.1.2 系统扩展能力片外 RAM和片外 ROM都可扩展 64KB,片外扩展的 I/O口等与片外 RAM统一编址 。
8.1.3 地址的译码线选法,全译码法,部分译码法
8.1.4 总线能力的扩展通过总线驱动器第 9章 存储器扩展
8.1.3 地址的译码线选法,全译码法,部分译码法线选法是把某一根片选地址线直接连到某个外围电路芯片的片选端,选通该外围电路。
线选法接线简单,但地址重叠太多,地址空间不能充分利用。所以,只有当单片机外接少量外围电路时,才采用线选法。
第 9章 存储器扩展第 9章 存储器扩展全译码法全译码法通常用译码器对单片机的全部地址线进行译码,译出的信号作为片选信号。常用的译码器有
74LS138(3/8译码器),74LS139(双 2/4译码器)、
74LS154(4/16译码器)等。
全译码法地址空间连续,不存在重叠现象,译码器的输出空余端可进行其它扩展。在外围电路较多时用此法。但电路连接较复杂。
第 9章 存储器扩展第 9章 存储器扩展第 9章 存储器扩展部分译码法部分译码法是指单片机地址线中只有一部分参加了译码,其余部分是悬空的。
由于悬空地址线的状态不会影响它对存储单元的选址,故有地址重叠现象。其优点是可以减少所用译码器的数量。
第 9章 存储器扩展
8.1.4 总线能力的扩展在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器,并行接口,A/D接口,显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动 。
总线驱动器对于单片机的 I/O口只相当于增加了一个 TTL
负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用 。
在对 TTL 负载驱动时,只需考虑驱动电流的大小 ; 在对
MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动 。
第 9章 存储器扩展
1,常用的总线驱动器系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如 74LS244。 74LS244还带有三态控制,能实现总线缓冲和隔离 。
系统中的数据总线是双向的,其驱动器也要选用双向的,
如 74LS245 。 74LS245 也是三态的,有一个方向控制端 DIR,
DIR=1时输出 (An→B n),DIR=0时输入 (An←B n)。
第 9章 存储器扩展图 8.3 总线驱动器芯片管脚
( a)单向驱动器 ( b)双向驱动器第 9章 存储器扩展
2,总线驱动器的接口图 8.4 8051
( a) P2 口的驱动 ( b) P0 口的驱动第 9章 存储器扩展
8.2 程序存储器的扩展
8.2.1 常用程序存储器扩展芯片
( 1) EPROM
型号一般用 27开头,掉电后信息不会丢失,编程时需专用的编程器写入,其内容可以更改。当需要更改时,先将芯片放在专用的擦除器中,紫外线照射下使其 MOS电路复位,原存信息被擦除,然后重新编程,这样能反复多次使用。 EPROM
价格低廉,性能稳定,所以使用较为广泛。常见的型号有
2716( 2K× 8),2732( 4K× 8),2764( 8K× 8),27128
( 16K× 8),27256( 32K× 8),27512( 64K× 8)。
第 9章 存储器扩展
8.2.1 常用程序存储器扩展芯片
( 2) EEPROM
型号一般用 28开头,掉电后信息也不会丢失,不需要专门的编程器和擦除器,编程时的地址和数据信息由片内锁存器保存。除了能整片擦除以外,还能实现字节擦除,并且擦除和写入操作可以在单片机内进行,不需要附加设备。可擦写次数 1万次。,因而比 EPROM性能优越,但价格较高。主要有三种类型芯片:高压(+ 21V) EEPROM,2816,2817
( 2K× 8) ;+ 5V电写入 EEPROM,2816A,2817A
( 2K× 8),2864 ( 8K× 8);串行 EEPROM,NCR59308。
第 9章 存储器扩展
8.2.1 常用程序存储器扩展芯片
( 3)快擦写型存储器 PEROM
又称闪速存储器,型号一般用 29开头,具有掉电后信息保留的特点,又可以在线写入(写入前自动擦除),可擦写次数约 10万次。它既具有 EPROM价格低,集成度高的优点,又有
EEPROM电可擦除和写入的特性。其擦除和写入的速度比
EEPROM快的多,但是它只能整片擦除。 PEROM芯片的引脚和同容量的 EEPROM完全一致,工作过程也类似,但比
EEPROM具有更优越的性能和更低的价格。常见的有
AT29C256等。
第 9章 存储器扩展
8.2.2 扩展程序存储器实例第 9章 存储器扩展地址锁存电路 74LS373简介第 9章 存储器扩展工 作 时 序( PSEN*,ALE)
8-1.解释执行指令,ADD A,#30H”的操作时序(假设此指令放在片外程序存储器中)。
第 9章 存储器扩展扩展多片 EPROM芯片
2764( 1),0000H~1FFFH
2764( 2),2000H~3FFFH
2764( 3),4000H~5FFFH
第 9章 存储器扩展例,要求用 2764 芯片扩展 8031 的片外程序存储器空间,分配的地址范围为 0000H~3FFFH。
( 1)确定片数因 0000H ~ 3FFFH的存储空间为 16 KB,
所需芯片数 =实际要求的存储容量 /单个芯片的存储容量
= 16 KB/ 8 KB
= 2(片)
第 9章 存储器扩展
( 2)分配地址范围。
第 9章 存储器扩展
( 3)存储器扩展连接如图 9.9 所示。
图 9.9 采用地址译码器扩展存储器的连接图第 9章 存储器扩展
8.3 片外数据存储器的扩展
8.3.1 数据存储器常用扩展芯片数据存储器用于存储现场采集的原始数据、运算结果等,需要经常进行读写操作,所以经常采用半导体读写存储器 RAM。
EEPROM也可用作片外数据存储器。
MOS型 RAM按照基本存储电路的结构和特性,分为静态
RAM和动态 RAM。
第 9章 存储器扩展片外数据存储器扩展常用芯片
( 1)静态 RAM( SRAM)
MOS型静态 RAM的基本存储单元是 MOS型双稳态触发器。一个触发器可以 存储一位二进制信息。 SRAM能可靠的保持所存信息,不需要刷新操作;只要电源不断电,信息不会丢失。但功耗大,集成度较低,成本高,常用于存储容量较小的微机应用系统。常用芯片主要有 6116( 2K× 8),6264( 8K× 8)等。
( 2)动态 RAM( DRAM)
MOS型动态 RAM利用 MOS管的栅极和源极之间的电容来保存信息。由于栅源极间电容的电荷量会逐渐泄漏,因此需要由
CPU按一定时间(如 1~ 2ms)将所有存入的信息逐个读出来,
经放大后再写进去,以保持原来的信息不变。这一操作称为动态存储器的刷新。为此需要刷新电路和相应的控制逻辑。它集成度高,功耗小、成本低,但电路复杂,常用于存储容量较大的微机系统。常用芯片有 2164A( 64K× 1)等。
第 9章 存储器扩展片外数据存储器扩展常用芯片
( 3)集成 RAM( iRAM)
是一种带刷新逻辑电路的 DRAM。由于它自带刷新逻辑,因此简化了与微处理器的连接电路,使用它和使用 SRAM一样方便,
兼有静态、动态 RAM的优点。常用芯片有 2186。
( 4)非易失性 RAM( NVRAM)
其存储体由 SRAM和 EEPROM两部分组成。正常读写时,
SRAM工作。当要保存信息时(如电源掉电),控制电路将
SRAM中的内容复制到 EEPROM中保存。存入 EEPROM中的信息又能够恢复到 SRAM中。 NVRAM既能够随机存取,又具有非易失性,适合用于需要掉电保护的场合。目前芯片容量还不能做的很大,另外由于 EEPROM的擦写次数有限制,因而影响 NVRAM的使用寿命。
第 9章 存储器扩展
8.3.2 扩展数据存储器实例第 9章 存储器扩展读写工作时序( ALE,RD*,WR*)
注意:这个过程与扩展片外 ROM不同。
扩展片外 ROM时,PSEN*控制片外 ROM的“读”选通,一个机器周期 ALE2
次有效,可“读” 2个字节。
扩展片外 RAM时,RD*/WR*控制片外 RAM的“读 /写”选通,2个机器周期
ALE只有 1次有效,只可“读 /写” 1个字节。所以访问片外 RAM的指令都是 2
周期指令。
第 9章 存储器扩展
6264 管脚图第 9章 存储器扩展表 6264的工作方式第 9章 存储器扩展
6264的 8KB地址范围不唯一 ( 因为 A14A13可为任意值 ),
6000H~7FFFH是一种地址范围 。 当向该片 6000H单元写一个数据 DATA时,可用如下指令,
MOV A,# DATA
MOV DPTA,# 6000H
MOVX @DPTR,A
从7 FFFH单元读一个数据时,可用如下指令,
MOV DPTR,# 7FFFH
MOVX A,@DPTR
第 9章 存储器扩展扩展多片 SRAM和 EPROM 2764( 1):
0000H~1FFFH
2764( 2):
2000H~3FFFH
6264( 1):
0000H~1FFFH
6264( 2):
2000H~3FFFH
第 9章 存储器扩展扩展片外程序存储器和扩展片外数据存储器的比较第 9章 存储器扩展
8.4 I/O口的扩展
8.4.1 I/O口扩展的方法和常用芯片
( 1)扩展方法
1)三总线扩展法
2)串行口扩展法串行口方式 0为移位寄存器方式,采用 74LS164(串入并出)可扩展并行输出口。使用 74LS165(并入串出)可扩展并行输入口。在不使用串行口时,
可使用此方法,但是数据传输较慢。
3)通过片内 I/O口扩展扩展芯片的数据线不通过 P0口,而是通过其它片内 I/O口,要占用有限的片内 I/O资源。
第 9章 存储器扩展常用的 I/O口扩展芯片
1)专用 I/O扩展芯片主要是 8255( 3× 8并行口),8243 ( 4× 4并行口)
2) I/O口综合扩展芯片主要有 8155H/8156H(2× 8+6并行 I/O口,256× 8静态 RAM、一个 14位定时器 /计数器),8755
( 2× 8并行 I/O口,2K× 8EPROM)。
3) TTL电路芯片广泛使用的有锁存器及三态缓冲器 74LS373,273、
374,377,367,244等,串行口扩展主要用移位寄存器 74LS164,74LS165
第 9章 存储器扩展
8.4.2 简单的 I/O口扩展方法
采用 TTL电路或 CMOS电路直接传送并行数据的方法,可以实现简单的 I/O口的扩展。
74LS244为双 4位三态门缓冲器;
74LS273是一种 8D触发器。
第 9章 存储器扩展第 9章 存储器扩展例 8-4 实现 8-12中的功能,按下任意键对应的 LED发光的功能,写出应用程序。
输入和输出都是在 P2.0为低电平时有效。
其输入和输出口地址都为 FEFFH。
LOOP:MOVDPTR,#0FEFFH
MOVX A,@DPTR
MOVX @DPTR,A
SJMP LOOP
第 9章 存储器扩展
8.4.3 利用串行口扩展的方法
P1.0控制移位与置位( PL),高电平 165串行移位,低电平 165并行置入数据。
第 9章 存储器扩展 例 8-5
根据图 8-13的扩展电路,从两个 8位并行口读入数据,并把它们转存到片内 RAM数据区地址为 50H,51H单元中,
写出相应程序。
START,MOV R0,#50H
MOV R7,#02H
CLR P1.0
SETB P1.0
MOV SCON,#10H
SIN,CLR RI
JNB RI,$
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R7,SIN
RET
第 9章 存储器扩展扩展并行输出口第 9章 存储器扩展 例 8-6
在图 8-14的串入并出移位寄存器扩展电路中,将片内
RAM50H,51H单元中的数据通过串行口转换成并行输出,写出相应程序。
START,MOV R0,#50H
MOV R7,#02H
MOV SCON,#00H
SOUT,MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
INC R0
DJNZ R7,SOUT
RET
第 9章 存储器扩展
8.5 综合功能扩展
8155扩展
8155是 Intel公司研制的通用 I/O接口芯片。为 40引脚双列直插式封装,单一的 +5V电源。
有三个基本组成部分:第一部分为三个可编程的 I/O
口,其中两个口( A口,B口)为 8位口,一个 C口为
6位口;第二部分为 256单元的 RAM;第三部分为一个 14位计数结构的定时器 /计数器。
第 9章 存储器扩展
8155的结构及引脚第 9章 存储器扩展 接口信号
AD0~AD7:地址 /数据总线。单片机和 8155之间的地址、数据、命令、状态信号通过这个总线端口传送。
ALE:地址锁存信号输入端。在 ALE的下降沿将单片机 P0口输出的低 8位地址信号以及 CE*,IO/M*的状态都锁存到 8155
内部地址锁存器中。
IO/M*,RAM与 I/O选择线。
CE*:片选信号。
RD*/WR*:读、写控制输入线。
TIMERIN:定时器输入线。定时器工作所需的时钟信号由此输入。
TIMEROUT:定时器输出线。编程可实现定时器的不同工作方式,输出方波或脉冲。
RESET:复位端。复位后 A,B,C口为输入方式。
第 9章 存储器扩展
8155的 I/O及 RAM的编址
A7 A6 A5 A4 A3 A2 A1 A0 I/O口
* * * * * 0 0 0 00H,命令 /状态口
0 0 1 01H,PA口
0 1 0 02H,PB口
0 1 1 03H,PC口
1 0 0 04H定时器低 8位
1 0 1 05H定时器高 8位第 9章 存储器扩展
8155的 命令 /状态寄存器命令寄存器和状态寄存器共用一个地址 00H,
命令寄存器只能写入,不能读出;状态寄存器只能读出,不能写入。
命令字共 8位,用于设定端口及定时器 /计数器的状态。
状态字用于锁存 I/O口和定时器的工作状态,供单片机查询用。
第 9章 存储器扩展
8155
的 命令 /状态寄存器第 9章 存储器扩展
8155I/O口的工作方式若 CE*=0,IO/M=1时,8155工作在 I/O方式。 I/O方式分为基本工作方式和选通工作方式。
PC2 PC1 00 01 10 11
ALT1 ALT2 ALT3 ALT4
PC0 入 出 A INTR A INTR
PC1 入 出 A BF A BF
PC2 入 出 A /STB A /STB
PC3 入 出 出 B INTR
PC4 入 出 出 B BF
PC5 入 出 出 B /STB
第 9章 存储器扩展
8155I/O口的工作方式
( 1)基本工作方式,A,B,C三口用作输入和输出。命令字的 D0决定 A口的出入方向,D1决定 B口的出入方向,D3D2=00
或 01决定 C的出入方向。
( 2)选通工作方式:命令字 D3D2=10或 11时处于选通方式。
INTR:中断请求信号(输出),高电平有效。送给 MCS-51
的外部中断请求。
BF:缓冲器满状态信号(输出),高电平有效。
STB*:选通信号(输入),低电平有效。数据输入操作时,
STB*是外设送来的选通信号;数据输出操作时,STB*是外设送来的应答信号。
第 9章 存储器扩展
8155的定时器 /计数器
M1 M2 T13 T12 T11 T10 T9 T8 T7 T6 T5 T4 T3 T2 T1 T0
0 0----单方波
0 1----连续方波
1 0----单脉冲
1 1----连续脉冲是一个 14位的减法计数器,由 2个计数器组成,
低 8位地址 04H,高 6位地址 05H,可对输入脉冲进行减法计数。
低 14位( T0~T13)组成计数器,剩下的两个高位
( M2,M1)用于定义计数器输出信号的形式。
第 9章 存储器扩展
( 1) 8155的定时器 /计数器是减法计数,而 MCS- 51的定时器
/计数器却是加法计数,因此,确定计数初值的方法是不同的 。
( 2) MCS- 51的定时器 /计数器有多种工作方式,而 8155的定时器 /计数器则只有一种固定的工作方式,即 14位计数 。
( 3) MCS- 51的定时器 /计数器有两种计数脉冲 。 但 8155的定时器 /计数器,不论是定时工作还是计数工作,都需由外部提供计数脉冲,其信号引脚就是 TIMER IN。
( 4) MCS- 51的定时器 /计数器,当计数溢出自动置位 TCON
寄存器的计数溢出标志位 (TF),以供用户查询或中断处理使用;
但 8155的定时器 /计数器,计数溢出时向芯片外部输出一个信号
( TlMER OUT) 。
8155的定时器 /计数器与 MCS- 51单片机芯片内部的定时器 /计数器,在功能上是完全相同的,同样具有定时和计数两种功能,
但是,在使用上却与 MCS- 51的定时器 /计数器有许多不同之处
,具体表现在:
第 9章 存储器扩展定时器初始化编程
首先将定时器初值及定时器输出方式送入定时器口,计数初值在 0002H~3FFFH之间选择,因为计数器为减法计数,
设初值时无需求补;其次是启动和停止计数器的工作,由命令寄存器的最高 2位( D7D6)控制。
D7D6=00H空操作,不影响计数器工作。
D7D6=01H停止计数。如果计数器尚未启动,无操作;如果计数器正在运行,则停止计数。
D7D6=10H达到计数值后(计数器减为 0)停止工作;如果计数器尚未启动,无操作。
D7D6=11H启动。如果计数器没运行,则在装入计数值后开始计数;如果计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。
第 9章 存储器扩展例 8-7 要求使用 8155定时器 /计数器对计数脉冲进行千分频,即计数 1000次后,TIMEROUT端电平变化,
并重新置数以产生连续方波。设 PA口为输入方式,
PB口为输出方式,PC口为输入方式,禁止中断。编写 8155初始化程序。
计数初值 1000=03E8H,合并最高 2位 M2M1=01,
计数器高位字为 43H,低位字为 E8H。
按各口工作方式,8155的命令字应为 C2H。
第 9章 存储器扩展假定命令 /状态寄存器的端口地址为 FD00H,则 8155的初始化程序为:
MOV DPTR,#0FD00H
MOV A,#0C2H
MOVX @DPTR,A
MOV DPTR,#0FD04H
MOV A,#0E8H
MOVX @DPTR,A
INC DPTR
MOV A,#43H
MOVX @DPTR,A
第 9章 存储器扩展
MCS-51单片机与 8155的接口电路
RAM字节地址:
7E00H~7EFFH
I/O地址命令 /状态口,7F00H
PA口,7F01H
PB口,7F02H
PC口,7F03H
定时器低 8位,7F04H
定时器高 8位,7F05H
第 9章 存储器扩展例 8-8 向 8155中 RAM的 0FH单元送入立即数 55H。
MOV A,#55H
MOV DPTR,#7E0FH
MOVX @DPTR,A
第 9章 存储器扩展例 8-9 8155用作 I/O口和定时器工作方式,A口定义为基本输入方式。 B口定义为基本输出方式,定时器作为方波发生器对输入脉冲进行 24分频( 8155中定时器最高计数器频率为 4MHz),编写程序。
MOV DPTR,#7F04H
MOV A,#18H
MOVX @DPTR,A
INC DPTR
MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#7F00H
MOV A,#0C2H
MOVX @DPTR,A
RET
第 9章 存储器扩展
8.5.2 多芯片综合扩展第 9章 存储器扩展地址译码后如下:
2716,0000H~07FFH
6116(1):0800H~0FFFH
6116(2):1000H~17FFH
8155:
命令 /状态口地址,0000H
PA口,0001H
PB口,0002H
PC口,0003H
定时器 /计数器的高、低位地址,0005H,0004H
RAM的地址,0000H~00FFH
第 9章 存储器扩展
4.4.2 8255可编程并行 I/O口扩展
1.芯片引脚及其内部结构图 4.18 8255A芯片的引脚图第 9章 存储器扩展图 4.19 8255A芯片的内部结构图第 9章 存储器扩展表 4.3 8255芯片的引脚信号说明第 9章 存储器扩展续表第 9章 存储器扩展
(1) 数据总线缓冲器:是一个 8位的双向三态驱动器,用于与单片机的数据总线相连。
(2) 读 /写控制逻辑:根据单片机的地址信息 (A1,A0)与控制信息 (RD,WR,RESET),控制片内数据,CPU控制字、外设状态信息的传送。
(3) 控制电路:根据 CPU送来的控制字使所管 I/O口按一定方式工作。对 C口甚至可按位实现 "置位 "或 "复位 "。控制电路分为两组:
A组控制电路控制 A口及 C口的高 4位 (PC7~PC4),B组控制电路控制
B口及 C口的低 4位 (PC3~PC0)。
(4) 三个并行 I/O端口,A口可编程为 8位输入,或 8位输出,或双向传送; B口可编程为 8位输入,或 8位输出,但不能双向传送; C口分为两个 4位口,用于输入或输出,也可用作 A口,B口的状态控制信号。
第 9章 存储器扩展
2,8255的操作方式
1) 读 /写控制逻辑操作选择表 4.4 8255的口操作状态第 9章 存储器扩展
2) 8255的三种工作方式方式 0(基本输入 /输出方式 ):这种工作方式不需要任何选通信号。 A口,B口及 C口的两个 4位口中任何一个端口都可以由程序设定为输入或输出。作为输出口时,输出数据被锁存;作为输入口时,输入数据不锁存。
方式 1(选通输入 /输出方式 ):在这种工作方式下,A,B,C
三个口分为两组。 A组包括 A口和 C口的高 4位,A口可由编程设定为输入口或输出口,C口的高 4位则用来作为 A口输入 /输出操作的控制和同步信号; B组包括 B口和 C口的低 4位,B口可由编程设定为输入口或输出口,C口的低 4位则用来作为 B口输入 /输出操作的控制和同步信号。 A口和 B口的输入数据或输出数据都被锁存。方式 1下的逻辑组态关系如图 4.20所示。
第 9章 存储器扩展图 4.20 8255方式 1逻辑组态关系图第 9章 存储器扩展
P C 5
P C 4
P C 6
P C 7
P C 3
I N TE
I N TE
&
&
≥ 1
P A 0 ~ P A
7
I B F A
S T B A
AC
K
A
O B F A
I N TR A
图 4,2 1 8 2 5 5 方式 2 逻辑组态关系图第 9章 存储器扩展3) 8255A的编程控制字图 4.22 8255A控制字的格式与定义
(a) 方式选择控制字; (b) C口置位 /复位控制字第 9章 存储器扩展图 4.23 8255的扩展连接图
3,8031与 8255的接口方法第 9章 存储器扩展例 6 试对图 4.23中的 8255A编程,使其各口工作于方式 0,A口作输入,B口作输出,C口高 4位作输出,C口的低 4位作输入。
由方式选择控制字的格式与 定义可确定出满足要求的方式控制字应为 91H(10010001B)。对 8255A编写程序将 91H写入它的控制寄存器,初始化程序为
MOV DPTR,#FF7FH ; DPTR作地址指针,指向控制口
MOV A,91H
MOVX @DPTR,A
因为图 4.23扩展电路未使用高位地址线,所以端口地址也可使用 8位。
第 9章 存储器扩展例 7 试按图 4.23扩展电路,写出自 8255A的 B口输出单片机中
R7内容与自 8255的 A口输入数据到单片机 R3的程序。
使用 8位地址,8255A的 A,B,C口及控制口地址分别为
7CH,7DH,7EH,7FH。则实现所要求功能的程序为
MOV R0,#7FH ; R0作地址指针,指向控制口
MOV A,#91H
MOVX @R0,A ;方式控制字送控制寄存器
MOV R0,#7DH ; R0指向 B口
MOV A,R7 ;
MOVX @R0,A ; R7的内容输出到 B口
DEC R0 ;使 R0指向 A口
MOVX A,@R0 ;从 A口输入数据到累加器 A
MOV R3,A ;把输入数据送存到 R3中第 9章 存储器扩展
MOV DPTR,#0BF03H
MOV A,#90H
MOVX @DPTR,A
MOV DPTR,#0BF01H
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#0BF00H
MOVX A,@DPTR
MOV R3,A
第 9章 存储器扩展
MOV DPTR,#07F03H
MOV A,#82H
MOVX @DPTR,A
MOV DPTR,#07F01H
MOVX A,@DPTR
MOV DPTR,#07F00H
MOVX @DPTR,A
8 MCS-51单片机的系统扩展
8.1 概述
8.2 程序存储器的扩展
8.3 片外数据存储器的扩展
8.4 I/O口扩展
8.5 综合功能扩展第 9章 存储器扩展
MCS-51单片机最小应用系统
P0
P1
P2
P3
+5V
+5V
EA
8051
8751
XTAL1
XTAL2
8
8
8
8
8051/8751最小应用系统第 9章 存储器扩展
8.1 概述单片机系统扩展的方法有并行扩展法和串行扩展法 。
并行扩展法 是利用单片机的三总线进行扩展 。 并行扩展法接线较多,但速度较快 。
串行扩展法 是指利用 SPI三线总线和串行总线扩展 。
串行扩展法的优点是接口器件体积小,减小空间和成本 。 但是串行接口器件速度较慢,在高速应用的场合,还是并行扩展法占主导地位 。
第 9章 存储器扩展第 9章 存储器扩展
8.1.1 片外总线结构
AB,DB,CB
8.1.2 系统扩展能力片外 RAM和片外 ROM都可扩展 64KB,片外扩展的 I/O口等与片外 RAM统一编址 。
8.1.3 地址的译码线选法,全译码法,部分译码法
8.1.4 总线能力的扩展通过总线驱动器第 9章 存储器扩展
8.1.3 地址的译码线选法,全译码法,部分译码法线选法是把某一根片选地址线直接连到某个外围电路芯片的片选端,选通该外围电路。
线选法接线简单,但地址重叠太多,地址空间不能充分利用。所以,只有当单片机外接少量外围电路时,才采用线选法。
第 9章 存储器扩展第 9章 存储器扩展全译码法全译码法通常用译码器对单片机的全部地址线进行译码,译出的信号作为片选信号。常用的译码器有
74LS138(3/8译码器),74LS139(双 2/4译码器)、
74LS154(4/16译码器)等。
全译码法地址空间连续,不存在重叠现象,译码器的输出空余端可进行其它扩展。在外围电路较多时用此法。但电路连接较复杂。
第 9章 存储器扩展第 9章 存储器扩展第 9章 存储器扩展部分译码法部分译码法是指单片机地址线中只有一部分参加了译码,其余部分是悬空的。
由于悬空地址线的状态不会影响它对存储单元的选址,故有地址重叠现象。其优点是可以减少所用译码器的数量。
第 9章 存储器扩展
8.1.4 总线能力的扩展在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器,并行接口,A/D接口,显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动 。
总线驱动器对于单片机的 I/O口只相当于增加了一个 TTL
负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用 。
在对 TTL 负载驱动时,只需考虑驱动电流的大小 ; 在对
MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动 。
第 9章 存储器扩展
1,常用的总线驱动器系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如 74LS244。 74LS244还带有三态控制,能实现总线缓冲和隔离 。
系统中的数据总线是双向的,其驱动器也要选用双向的,
如 74LS245 。 74LS245 也是三态的,有一个方向控制端 DIR,
DIR=1时输出 (An→B n),DIR=0时输入 (An←B n)。
第 9章 存储器扩展图 8.3 总线驱动器芯片管脚
( a)单向驱动器 ( b)双向驱动器第 9章 存储器扩展
2,总线驱动器的接口图 8.4 8051
( a) P2 口的驱动 ( b) P0 口的驱动第 9章 存储器扩展
8.2 程序存储器的扩展
8.2.1 常用程序存储器扩展芯片
( 1) EPROM
型号一般用 27开头,掉电后信息不会丢失,编程时需专用的编程器写入,其内容可以更改。当需要更改时,先将芯片放在专用的擦除器中,紫外线照射下使其 MOS电路复位,原存信息被擦除,然后重新编程,这样能反复多次使用。 EPROM
价格低廉,性能稳定,所以使用较为广泛。常见的型号有
2716( 2K× 8),2732( 4K× 8),2764( 8K× 8),27128
( 16K× 8),27256( 32K× 8),27512( 64K× 8)。
第 9章 存储器扩展
8.2.1 常用程序存储器扩展芯片
( 2) EEPROM
型号一般用 28开头,掉电后信息也不会丢失,不需要专门的编程器和擦除器,编程时的地址和数据信息由片内锁存器保存。除了能整片擦除以外,还能实现字节擦除,并且擦除和写入操作可以在单片机内进行,不需要附加设备。可擦写次数 1万次。,因而比 EPROM性能优越,但价格较高。主要有三种类型芯片:高压(+ 21V) EEPROM,2816,2817
( 2K× 8) ;+ 5V电写入 EEPROM,2816A,2817A
( 2K× 8),2864 ( 8K× 8);串行 EEPROM,NCR59308。
第 9章 存储器扩展
8.2.1 常用程序存储器扩展芯片
( 3)快擦写型存储器 PEROM
又称闪速存储器,型号一般用 29开头,具有掉电后信息保留的特点,又可以在线写入(写入前自动擦除),可擦写次数约 10万次。它既具有 EPROM价格低,集成度高的优点,又有
EEPROM电可擦除和写入的特性。其擦除和写入的速度比
EEPROM快的多,但是它只能整片擦除。 PEROM芯片的引脚和同容量的 EEPROM完全一致,工作过程也类似,但比
EEPROM具有更优越的性能和更低的价格。常见的有
AT29C256等。
第 9章 存储器扩展
8.2.2 扩展程序存储器实例第 9章 存储器扩展地址锁存电路 74LS373简介第 9章 存储器扩展工 作 时 序( PSEN*,ALE)
8-1.解释执行指令,ADD A,#30H”的操作时序(假设此指令放在片外程序存储器中)。
第 9章 存储器扩展扩展多片 EPROM芯片
2764( 1),0000H~1FFFH
2764( 2),2000H~3FFFH
2764( 3),4000H~5FFFH
第 9章 存储器扩展例,要求用 2764 芯片扩展 8031 的片外程序存储器空间,分配的地址范围为 0000H~3FFFH。
( 1)确定片数因 0000H ~ 3FFFH的存储空间为 16 KB,
所需芯片数 =实际要求的存储容量 /单个芯片的存储容量
= 16 KB/ 8 KB
= 2(片)
第 9章 存储器扩展
( 2)分配地址范围。
第 9章 存储器扩展
( 3)存储器扩展连接如图 9.9 所示。
图 9.9 采用地址译码器扩展存储器的连接图第 9章 存储器扩展
8.3 片外数据存储器的扩展
8.3.1 数据存储器常用扩展芯片数据存储器用于存储现场采集的原始数据、运算结果等,需要经常进行读写操作,所以经常采用半导体读写存储器 RAM。
EEPROM也可用作片外数据存储器。
MOS型 RAM按照基本存储电路的结构和特性,分为静态
RAM和动态 RAM。
第 9章 存储器扩展片外数据存储器扩展常用芯片
( 1)静态 RAM( SRAM)
MOS型静态 RAM的基本存储单元是 MOS型双稳态触发器。一个触发器可以 存储一位二进制信息。 SRAM能可靠的保持所存信息,不需要刷新操作;只要电源不断电,信息不会丢失。但功耗大,集成度较低,成本高,常用于存储容量较小的微机应用系统。常用芯片主要有 6116( 2K× 8),6264( 8K× 8)等。
( 2)动态 RAM( DRAM)
MOS型动态 RAM利用 MOS管的栅极和源极之间的电容来保存信息。由于栅源极间电容的电荷量会逐渐泄漏,因此需要由
CPU按一定时间(如 1~ 2ms)将所有存入的信息逐个读出来,
经放大后再写进去,以保持原来的信息不变。这一操作称为动态存储器的刷新。为此需要刷新电路和相应的控制逻辑。它集成度高,功耗小、成本低,但电路复杂,常用于存储容量较大的微机系统。常用芯片有 2164A( 64K× 1)等。
第 9章 存储器扩展片外数据存储器扩展常用芯片
( 3)集成 RAM( iRAM)
是一种带刷新逻辑电路的 DRAM。由于它自带刷新逻辑,因此简化了与微处理器的连接电路,使用它和使用 SRAM一样方便,
兼有静态、动态 RAM的优点。常用芯片有 2186。
( 4)非易失性 RAM( NVRAM)
其存储体由 SRAM和 EEPROM两部分组成。正常读写时,
SRAM工作。当要保存信息时(如电源掉电),控制电路将
SRAM中的内容复制到 EEPROM中保存。存入 EEPROM中的信息又能够恢复到 SRAM中。 NVRAM既能够随机存取,又具有非易失性,适合用于需要掉电保护的场合。目前芯片容量还不能做的很大,另外由于 EEPROM的擦写次数有限制,因而影响 NVRAM的使用寿命。
第 9章 存储器扩展
8.3.2 扩展数据存储器实例第 9章 存储器扩展读写工作时序( ALE,RD*,WR*)
注意:这个过程与扩展片外 ROM不同。
扩展片外 ROM时,PSEN*控制片外 ROM的“读”选通,一个机器周期 ALE2
次有效,可“读” 2个字节。
扩展片外 RAM时,RD*/WR*控制片外 RAM的“读 /写”选通,2个机器周期
ALE只有 1次有效,只可“读 /写” 1个字节。所以访问片外 RAM的指令都是 2
周期指令。
第 9章 存储器扩展
6264 管脚图第 9章 存储器扩展表 6264的工作方式第 9章 存储器扩展
6264的 8KB地址范围不唯一 ( 因为 A14A13可为任意值 ),
6000H~7FFFH是一种地址范围 。 当向该片 6000H单元写一个数据 DATA时,可用如下指令,
MOV A,# DATA
MOV DPTA,# 6000H
MOVX @DPTR,A
从7 FFFH单元读一个数据时,可用如下指令,
MOV DPTR,# 7FFFH
MOVX A,@DPTR
第 9章 存储器扩展扩展多片 SRAM和 EPROM 2764( 1):
0000H~1FFFH
2764( 2):
2000H~3FFFH
6264( 1):
0000H~1FFFH
6264( 2):
2000H~3FFFH
第 9章 存储器扩展扩展片外程序存储器和扩展片外数据存储器的比较第 9章 存储器扩展
8.4 I/O口的扩展
8.4.1 I/O口扩展的方法和常用芯片
( 1)扩展方法
1)三总线扩展法
2)串行口扩展法串行口方式 0为移位寄存器方式,采用 74LS164(串入并出)可扩展并行输出口。使用 74LS165(并入串出)可扩展并行输入口。在不使用串行口时,
可使用此方法,但是数据传输较慢。
3)通过片内 I/O口扩展扩展芯片的数据线不通过 P0口,而是通过其它片内 I/O口,要占用有限的片内 I/O资源。
第 9章 存储器扩展常用的 I/O口扩展芯片
1)专用 I/O扩展芯片主要是 8255( 3× 8并行口),8243 ( 4× 4并行口)
2) I/O口综合扩展芯片主要有 8155H/8156H(2× 8+6并行 I/O口,256× 8静态 RAM、一个 14位定时器 /计数器),8755
( 2× 8并行 I/O口,2K× 8EPROM)。
3) TTL电路芯片广泛使用的有锁存器及三态缓冲器 74LS373,273、
374,377,367,244等,串行口扩展主要用移位寄存器 74LS164,74LS165
第 9章 存储器扩展
8.4.2 简单的 I/O口扩展方法
采用 TTL电路或 CMOS电路直接传送并行数据的方法,可以实现简单的 I/O口的扩展。
74LS244为双 4位三态门缓冲器;
74LS273是一种 8D触发器。
第 9章 存储器扩展第 9章 存储器扩展例 8-4 实现 8-12中的功能,按下任意键对应的 LED发光的功能,写出应用程序。
输入和输出都是在 P2.0为低电平时有效。
其输入和输出口地址都为 FEFFH。
LOOP:MOVDPTR,#0FEFFH
MOVX A,@DPTR
MOVX @DPTR,A
SJMP LOOP
第 9章 存储器扩展
8.4.3 利用串行口扩展的方法
P1.0控制移位与置位( PL),高电平 165串行移位,低电平 165并行置入数据。
第 9章 存储器扩展 例 8-5
根据图 8-13的扩展电路,从两个 8位并行口读入数据,并把它们转存到片内 RAM数据区地址为 50H,51H单元中,
写出相应程序。
START,MOV R0,#50H
MOV R7,#02H
CLR P1.0
SETB P1.0
MOV SCON,#10H
SIN,CLR RI
JNB RI,$
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R7,SIN
RET
第 9章 存储器扩展扩展并行输出口第 9章 存储器扩展 例 8-6
在图 8-14的串入并出移位寄存器扩展电路中,将片内
RAM50H,51H单元中的数据通过串行口转换成并行输出,写出相应程序。
START,MOV R0,#50H
MOV R7,#02H
MOV SCON,#00H
SOUT,MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
INC R0
DJNZ R7,SOUT
RET
第 9章 存储器扩展
8.5 综合功能扩展
8155扩展
8155是 Intel公司研制的通用 I/O接口芯片。为 40引脚双列直插式封装,单一的 +5V电源。
有三个基本组成部分:第一部分为三个可编程的 I/O
口,其中两个口( A口,B口)为 8位口,一个 C口为
6位口;第二部分为 256单元的 RAM;第三部分为一个 14位计数结构的定时器 /计数器。
第 9章 存储器扩展
8155的结构及引脚第 9章 存储器扩展 接口信号
AD0~AD7:地址 /数据总线。单片机和 8155之间的地址、数据、命令、状态信号通过这个总线端口传送。
ALE:地址锁存信号输入端。在 ALE的下降沿将单片机 P0口输出的低 8位地址信号以及 CE*,IO/M*的状态都锁存到 8155
内部地址锁存器中。
IO/M*,RAM与 I/O选择线。
CE*:片选信号。
RD*/WR*:读、写控制输入线。
TIMERIN:定时器输入线。定时器工作所需的时钟信号由此输入。
TIMEROUT:定时器输出线。编程可实现定时器的不同工作方式,输出方波或脉冲。
RESET:复位端。复位后 A,B,C口为输入方式。
第 9章 存储器扩展
8155的 I/O及 RAM的编址
A7 A6 A5 A4 A3 A2 A1 A0 I/O口
* * * * * 0 0 0 00H,命令 /状态口
0 0 1 01H,PA口
0 1 0 02H,PB口
0 1 1 03H,PC口
1 0 0 04H定时器低 8位
1 0 1 05H定时器高 8位第 9章 存储器扩展
8155的 命令 /状态寄存器命令寄存器和状态寄存器共用一个地址 00H,
命令寄存器只能写入,不能读出;状态寄存器只能读出,不能写入。
命令字共 8位,用于设定端口及定时器 /计数器的状态。
状态字用于锁存 I/O口和定时器的工作状态,供单片机查询用。
第 9章 存储器扩展
8155
的 命令 /状态寄存器第 9章 存储器扩展
8155I/O口的工作方式若 CE*=0,IO/M=1时,8155工作在 I/O方式。 I/O方式分为基本工作方式和选通工作方式。
PC2 PC1 00 01 10 11
ALT1 ALT2 ALT3 ALT4
PC0 入 出 A INTR A INTR
PC1 入 出 A BF A BF
PC2 入 出 A /STB A /STB
PC3 入 出 出 B INTR
PC4 入 出 出 B BF
PC5 入 出 出 B /STB
第 9章 存储器扩展
8155I/O口的工作方式
( 1)基本工作方式,A,B,C三口用作输入和输出。命令字的 D0决定 A口的出入方向,D1决定 B口的出入方向,D3D2=00
或 01决定 C的出入方向。
( 2)选通工作方式:命令字 D3D2=10或 11时处于选通方式。
INTR:中断请求信号(输出),高电平有效。送给 MCS-51
的外部中断请求。
BF:缓冲器满状态信号(输出),高电平有效。
STB*:选通信号(输入),低电平有效。数据输入操作时,
STB*是外设送来的选通信号;数据输出操作时,STB*是外设送来的应答信号。
第 9章 存储器扩展
8155的定时器 /计数器
M1 M2 T13 T12 T11 T10 T9 T8 T7 T6 T5 T4 T3 T2 T1 T0
0 0----单方波
0 1----连续方波
1 0----单脉冲
1 1----连续脉冲是一个 14位的减法计数器,由 2个计数器组成,
低 8位地址 04H,高 6位地址 05H,可对输入脉冲进行减法计数。
低 14位( T0~T13)组成计数器,剩下的两个高位
( M2,M1)用于定义计数器输出信号的形式。
第 9章 存储器扩展
( 1) 8155的定时器 /计数器是减法计数,而 MCS- 51的定时器
/计数器却是加法计数,因此,确定计数初值的方法是不同的 。
( 2) MCS- 51的定时器 /计数器有多种工作方式,而 8155的定时器 /计数器则只有一种固定的工作方式,即 14位计数 。
( 3) MCS- 51的定时器 /计数器有两种计数脉冲 。 但 8155的定时器 /计数器,不论是定时工作还是计数工作,都需由外部提供计数脉冲,其信号引脚就是 TIMER IN。
( 4) MCS- 51的定时器 /计数器,当计数溢出自动置位 TCON
寄存器的计数溢出标志位 (TF),以供用户查询或中断处理使用;
但 8155的定时器 /计数器,计数溢出时向芯片外部输出一个信号
( TlMER OUT) 。
8155的定时器 /计数器与 MCS- 51单片机芯片内部的定时器 /计数器,在功能上是完全相同的,同样具有定时和计数两种功能,
但是,在使用上却与 MCS- 51的定时器 /计数器有许多不同之处
,具体表现在:
第 9章 存储器扩展定时器初始化编程
首先将定时器初值及定时器输出方式送入定时器口,计数初值在 0002H~3FFFH之间选择,因为计数器为减法计数,
设初值时无需求补;其次是启动和停止计数器的工作,由命令寄存器的最高 2位( D7D6)控制。
D7D6=00H空操作,不影响计数器工作。
D7D6=01H停止计数。如果计数器尚未启动,无操作;如果计数器正在运行,则停止计数。
D7D6=10H达到计数值后(计数器减为 0)停止工作;如果计数器尚未启动,无操作。
D7D6=11H启动。如果计数器没运行,则在装入计数值后开始计数;如果计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。
第 9章 存储器扩展例 8-7 要求使用 8155定时器 /计数器对计数脉冲进行千分频,即计数 1000次后,TIMEROUT端电平变化,
并重新置数以产生连续方波。设 PA口为输入方式,
PB口为输出方式,PC口为输入方式,禁止中断。编写 8155初始化程序。
计数初值 1000=03E8H,合并最高 2位 M2M1=01,
计数器高位字为 43H,低位字为 E8H。
按各口工作方式,8155的命令字应为 C2H。
第 9章 存储器扩展假定命令 /状态寄存器的端口地址为 FD00H,则 8155的初始化程序为:
MOV DPTR,#0FD00H
MOV A,#0C2H
MOVX @DPTR,A
MOV DPTR,#0FD04H
MOV A,#0E8H
MOVX @DPTR,A
INC DPTR
MOV A,#43H
MOVX @DPTR,A
第 9章 存储器扩展
MCS-51单片机与 8155的接口电路
RAM字节地址:
7E00H~7EFFH
I/O地址命令 /状态口,7F00H
PA口,7F01H
PB口,7F02H
PC口,7F03H
定时器低 8位,7F04H
定时器高 8位,7F05H
第 9章 存储器扩展例 8-8 向 8155中 RAM的 0FH单元送入立即数 55H。
MOV A,#55H
MOV DPTR,#7E0FH
MOVX @DPTR,A
第 9章 存储器扩展例 8-9 8155用作 I/O口和定时器工作方式,A口定义为基本输入方式。 B口定义为基本输出方式,定时器作为方波发生器对输入脉冲进行 24分频( 8155中定时器最高计数器频率为 4MHz),编写程序。
MOV DPTR,#7F04H
MOV A,#18H
MOVX @DPTR,A
INC DPTR
MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#7F00H
MOV A,#0C2H
MOVX @DPTR,A
RET
第 9章 存储器扩展
8.5.2 多芯片综合扩展第 9章 存储器扩展地址译码后如下:
2716,0000H~07FFH
6116(1):0800H~0FFFH
6116(2):1000H~17FFH
8155:
命令 /状态口地址,0000H
PA口,0001H
PB口,0002H
PC口,0003H
定时器 /计数器的高、低位地址,0005H,0004H
RAM的地址,0000H~00FFH
第 9章 存储器扩展
4.4.2 8255可编程并行 I/O口扩展
1.芯片引脚及其内部结构图 4.18 8255A芯片的引脚图第 9章 存储器扩展图 4.19 8255A芯片的内部结构图第 9章 存储器扩展表 4.3 8255芯片的引脚信号说明第 9章 存储器扩展续表第 9章 存储器扩展
(1) 数据总线缓冲器:是一个 8位的双向三态驱动器,用于与单片机的数据总线相连。
(2) 读 /写控制逻辑:根据单片机的地址信息 (A1,A0)与控制信息 (RD,WR,RESET),控制片内数据,CPU控制字、外设状态信息的传送。
(3) 控制电路:根据 CPU送来的控制字使所管 I/O口按一定方式工作。对 C口甚至可按位实现 "置位 "或 "复位 "。控制电路分为两组:
A组控制电路控制 A口及 C口的高 4位 (PC7~PC4),B组控制电路控制
B口及 C口的低 4位 (PC3~PC0)。
(4) 三个并行 I/O端口,A口可编程为 8位输入,或 8位输出,或双向传送; B口可编程为 8位输入,或 8位输出,但不能双向传送; C口分为两个 4位口,用于输入或输出,也可用作 A口,B口的状态控制信号。
第 9章 存储器扩展
2,8255的操作方式
1) 读 /写控制逻辑操作选择表 4.4 8255的口操作状态第 9章 存储器扩展
2) 8255的三种工作方式方式 0(基本输入 /输出方式 ):这种工作方式不需要任何选通信号。 A口,B口及 C口的两个 4位口中任何一个端口都可以由程序设定为输入或输出。作为输出口时,输出数据被锁存;作为输入口时,输入数据不锁存。
方式 1(选通输入 /输出方式 ):在这种工作方式下,A,B,C
三个口分为两组。 A组包括 A口和 C口的高 4位,A口可由编程设定为输入口或输出口,C口的高 4位则用来作为 A口输入 /输出操作的控制和同步信号; B组包括 B口和 C口的低 4位,B口可由编程设定为输入口或输出口,C口的低 4位则用来作为 B口输入 /输出操作的控制和同步信号。 A口和 B口的输入数据或输出数据都被锁存。方式 1下的逻辑组态关系如图 4.20所示。
第 9章 存储器扩展图 4.20 8255方式 1逻辑组态关系图第 9章 存储器扩展
P C 5
P C 4
P C 6
P C 7
P C 3
I N TE
I N TE
&
&
≥ 1
P A 0 ~ P A
7
I B F A
S T B A
AC
K
A
O B F A
I N TR A
图 4,2 1 8 2 5 5 方式 2 逻辑组态关系图第 9章 存储器扩展3) 8255A的编程控制字图 4.22 8255A控制字的格式与定义
(a) 方式选择控制字; (b) C口置位 /复位控制字第 9章 存储器扩展图 4.23 8255的扩展连接图
3,8031与 8255的接口方法第 9章 存储器扩展例 6 试对图 4.23中的 8255A编程,使其各口工作于方式 0,A口作输入,B口作输出,C口高 4位作输出,C口的低 4位作输入。
由方式选择控制字的格式与 定义可确定出满足要求的方式控制字应为 91H(10010001B)。对 8255A编写程序将 91H写入它的控制寄存器,初始化程序为
MOV DPTR,#FF7FH ; DPTR作地址指针,指向控制口
MOV A,91H
MOVX @DPTR,A
因为图 4.23扩展电路未使用高位地址线,所以端口地址也可使用 8位。
第 9章 存储器扩展例 7 试按图 4.23扩展电路,写出自 8255A的 B口输出单片机中
R7内容与自 8255的 A口输入数据到单片机 R3的程序。
使用 8位地址,8255A的 A,B,C口及控制口地址分别为
7CH,7DH,7EH,7FH。则实现所要求功能的程序为
MOV R0,#7FH ; R0作地址指针,指向控制口
MOV A,#91H
MOVX @R0,A ;方式控制字送控制寄存器
MOV R0,#7DH ; R0指向 B口
MOV A,R7 ;
MOVX @R0,A ; R7的内容输出到 B口
DEC R0 ;使 R0指向 A口
MOVX A,@R0 ;从 A口输入数据到累加器 A
MOV R3,A ;把输入数据送存到 R3中第 9章 存储器扩展
MOV DPTR,#0BF03H
MOV A,#90H
MOVX @DPTR,A
MOV DPTR,#0BF01H
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#0BF00H
MOVX A,@DPTR
MOV R3,A
第 9章 存储器扩展
MOV DPTR,#07F03H
MOV A,#82H
MOVX @DPTR,A
MOV DPTR,#07F01H
MOVX A,@DPTR
MOV DPTR,#07F00H
MOVX @DPTR,A