Transcript Document
第6章 MCS-51单片机系统扩展 6.1 MCS-51单片机的最小系统 6.2 存储器扩展 6.3 输入/输出口扩展 MCS-51单片机系统扩展包括: 1、程序存储器扩展; 2、数据存储器扩展; 3、I/O口扩展; 4、定时/计数器扩展; 5、中断系统扩展; 6、串行口扩展。 在本章中只介绍应用较多的程序存储 器扩展、数据存储器扩展和I/O口扩展。 6.1 MCS-51单片机的最小系统 所谓最小系统,是指一个真正可用的单 片机最小配置系统。对于单片机内部资源已 能满足系统需要的,可直接采用最小系统。 MCS-51单片机根据片内有无程序存储器最 小系统分两种情况。 6.1.1 8051/8751的最小系统 8051/8751片内分别有4KB的ROM/EPROM,因此,只需 要外接晶体振荡器和复位电路就可构成最小系统。 P0 8 P1 8 P2 8 GNDP3 8 XTAL1 8751 8051 XTAL2 RESET EA +5V +5V 该最小系统的特点如下: (1)由于片外没有扩展存储器和 外设,P0、P1、P2、P3都可以作 为用户I/O口使用。 (2)片内数据存储器有128字节, 地址空间00H~7FH,没有片外数 据存储器。 (3)内部有4KB程序存储器,地 址空间0000H~0FFFH,没有片外 程序存储器,EA应接高电平。 (4)可以使用两个定时/计数器T0 和T1,一个全双工的串行通信接 口,5个中断源。 6.1.1 8031最小应用系统 8031片内无程序存储器片, 因此,在构成最小应用系统不仅 要外接晶体振荡器和复位电路, 还应外扩展程序存储器。 高8位地址线 A15-8 P2 ALE G 74LS 373 8031 A7-0 CE 2764 P0 EA PSEN D7-0 OE 该最小系统特点如下: (1)由于P0、P2在扩展程序存储 器时作为地址线和数据线,不能作 为I/O线,因此,只有P1、P3作为 用户I/O口使用。 (2)片内数据存储器同样有128 字节,地址空间00H~7FH,没有 片外数据存储器。 (3)内部有无程序存储器,但片 外扩展了程序存储器,其地址空间 随芯片容量不同而不一样。左图中 使用的是2764芯片,容量为8K字 节,地址空间为0000H~1FFFH。 由于片内没有程序存储器,只能使 用片外程序存储器,EA只能接低 电平。 (4)同样可以使用两个定时/计数 器T0和T1,一个全双工的串行通 信接口,5个中断源。 6.2 存储器扩展 6.2.1 存储器扩展概述 一、MCS-51单片机的存储器扩展能力 MCS-51单片机地址总线宽度为16位,片 外可扩展的存储器最大容量为64KB,地址为 0000H~FFFFH。因为程序存储器和数据存储 器是通过不同的控制信号和指令进行访问,允 许两者的地址空间重叠,所以片外可扩展的程 序存储器与数据存储器分别都为64KB。 存储器扩展: 1、扩充存储器字长: 2、扩充存储器容量: 二、存储器扩展的一般方法 不论何种存储器芯片,其引脚都呈三总线结构,与单片机 连接都是三总线对接。另外,电源线接电源线,地线接地线。 1、控制线:对于程序存储器,一般来说,具有输出允许控制 线 /OE,它与单片机的/PSEN信号线相连。对于数据存储器, 一般都有输出允许控制线/OE和写控制线 /WE,它们分别与 单片机的读信号线/RD和写信号线/WR相连。 2、数据线:存储器芯片的数据线的数目由芯片的字长决定。 连接时,存储器芯片的数据线与单片机的数据总线 (P0.0~P0.7)按由低位到高位的顺序顺次相接。 3、地址线:存储器芯片的地址线的数目由芯片的容量决定。 容量(Q)与地址线数目(N)满足关系式:Q=2N。存储器芯片的 地址线与单片机的地址总线(A0~A15)按由低位到高位的顺序 顺次相接。一般来说,存储器芯片的地址线数目总是少于单 片机地址总线的数目,因此连接后,单片机的高位地址线总 有剩余。剩余地址线一般作为译码线,译码输出与存储器芯 片的片选信号线/CS相接。片选信号线与单片机系统的译码 输出相接后,就决定了存储器芯片的地址范围。 总线扩展驱动: 当单片机外接芯片较多,超出总线负载能力, 必须加总线驱动器。 •单向驱动器 74LS244、 74LS245用于 地址总线驱动; •双向驱动器 74LS255用于 数据总线驱动。 存储器编址分两个层次: 1、存储芯片的选择(译码); 2、芯片内部存储单元的选择(地址线)。 译码有两种方法:部分译码法和全译码法。 部分译码:所谓部分译码就是存储器芯片的地址线 与单片机系统的地址线顺次相接后,剩余的高位地址线 仅用一部分参加译码。部分译码使存储器芯片的地址空 间有重叠,造成系统存储器空间的浪费。 部分译码法的一个特例是线译码。所谓线译码就 是直接用一根剩余的高位地址线与一块存储器芯片的片 选信号/CS相连。 全译码:所谓全译码就是存储器芯片的地址线与单 片机系统的地址线顺次相接后,剩余的高位地址线全部 参加译码。这种译码方法存储器芯片的地址空间是唯一 确定的,但译码电路相对复杂。 如下图,存储器芯片容量为2KB,地址线为11根, 与地址总线的低11位A0~A10相连,用于选中芯片内的单 元。地址总线的A11、A12、A13、A14四根地址线参加 译码的选中芯片,设这四根地址总线的状态为0100时选 中该芯片。地址总线A15不参加译码,当地址总线A15为 0、1两种状态都可以选中该存储器芯片。 地址译码线 与存储器芯片连接的地址线 A15 A14 A13 A12 A11 A10 A9 0 0 1 0 A8 A7 A6 A5 A4 A3 A2 A1 A0 当A15=0时,芯片占用的地址是 0001000000000000~0001011111111111, 即1000H~17FFH。 当A15=1时,芯片占用的地址是 1001000000000000~1001011111111111, 即9000H~97FFH。 例:用2K×1位存储芯片组成2K×8位存储系统。 当地址、片选和读写信号有效,可并行存取8位信息;共用片选。 例:用2K×8位存储器芯片组成2K×16位存储器系统。 D0~7 D8~15 D0~7 R/W CE A0~10 共用片选 R/W CE A0~10 D0~7 R/W CE A0~10 地址、片选和读写引线并联后引出,数据线并列引出。 例:用1K×4位存储器芯片组成4K×8位存储器系统。 例:三片8KB的存储器芯片组成 24KB 容量的存储器。 D0~7 设CE1、CE2、CE3 分别连接微型机 R/W 的高位地址总线 CE1 (AB13) A0~12 AB13、AB14、AB15。 确定各存储器芯 片的地址空间: ABi:15141312 11109 8 7 6 5 4 CE2 (AB14) D0~7 R/W Ⅰ CE A0~12 D0~7 R/W Ⅱ CE A0~12 D0~7 R/W CE Ⅲ A0~12 CE3 (AB15) 3 2 1 0~15141312 11109 8 7 6 5 4 3 2 1 0 Ⅰ:1100 0000 0000 0000~1101 1111 1111 1111=C000H~DFFFH Ⅱ:1010 0000 0000 0000~1011 1111 1111 1111=A000H~BFFFH Ⅲ:0110 0000 0000 0000~0111 1111 1111 1111=6000H~7FFFH 3.扩展存储器所需芯片数目的确定 存储器扩展: 一、扩充存储器字长; 二、扩充存储器容量。 若所选存储器芯片字长与单片机字长一致,则只需 扩展容量。所需芯片数目按下式确定: 芯片数目 = 系统扩展容量 存储器芯片容量 若所选存储器芯片字长与单片机字长不一致,则不仅 需扩展容量,还需字扩展。所需芯片数目按下式确定: 芯片数目 = 系统扩展容量 存储器芯片容量 × 系统字长 存储器芯片字长 6.2.2 程序存储器扩展 工作时,ROM中的信息只能读出,要用特殊方式写入(固化信息), 失电后可保持信息不丢失。 1.掩膜ROM:不可改写ROM 由生产芯片的厂家固化信息。在最后一道工序用掩膜工艺写入信息, 用户只可读(如80C51)。 2.PROM:可编程ROM 用户可进行一次编程。存储单元电路由熔丝相连,当加入写脉冲, 某些存储单元熔丝熔断,信息永久写入,不可再次改写。 3.EPROM:可擦除PROM 用户可以多次编程。编程加写脉冲后,某些存储单元的PN结表面形 成浮动栅,阻挡通路,实现信息写入。用紫外线照射可驱散浮动栅, 原有信息全部擦除,便可再次改写(如87C51)。 4.EEPROM:可电擦除PROM 既可全片擦除也可字节擦除,可在线擦除信息,又能失电保存信息, 具备RAM、ROM的优点。但写入时间较长(如8951)。 扩展程序存储器电路常用EPROM芯片: 常用EPROM芯片: Intel 2716 (2KB=2K×8位)、 2732 (4KB)、 2764 (8KB)、 27128(16KB)、 27256(32KB)、 27512(64KB)。 一.单片程 序存储器的 扩展 +5V Vcc 8031 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 ALE EA Vss PSEN 其8个重叠的地址范围为如下: 0000000000000000~0001111111111111,即0000H~1FFFH; 0010000000000000~0011111111111111,即2000H~3FFFH; 0100000000000000~0101111111111111,即4000H~5FFFH; 0110000000000000~0111111111111111,即6000H~7FFFH; 1000000000000000~1001111111111111,即8000H~9FFFH; 1010000000000000~1011111111111111,即A000H~BFFFH; 1100000000000000~1101111111111111,即C000H~DFFFH; 1110000000000000~1111111111111111,即E000H~FFFFH。 8D 7D 6D 5D 74LS 4D 3D 373 2D 1D G OE 8Q 7Q 6Q 5Q 4Q 3Q 2Q 1Q A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 OE Vff Vcc 2764 CE GND +5V 单片机程序存储器扩展连接图 最低地址:8000H; 最高地址:87FFH。 地址范围:8000H~87FFH。 二.多片程序存储器的扩展 P2.7 P2.6 P2.5 P2.4~P2.0 ALE 5 8 8031 74LS 373 OE EA P0 G 8 8 5 A0~A7 A8~A12 CE 2764(1) D0~D7 OE 8 8 5 A0~A7 A8~A12 CE 2764(2) D0~D7 OE 8 PSEN 上图是通过线选法实现的两片2764扩展成16KB程序存储器。两片2764 的地址线A0~A12与地址总线的A0~A12对应相连,2764的数据线D0~D7与 数据总线A0~A7对应相连,两片2764的输出允许控制线连在一起与8031的 /PSEN相连。第一片2764的片选线/CS与8031地址总线的P2.7直接相连, 第二片2764的片选线/CS与8031地址总线的P2.7取反后相连。 其两片的地址空间分别为: 第一片:00000000000000000~0001111111111111,即0000H~1FFFH; 2764(1): 00100000000000000~0011111111111111,即2000H~3FFFH; 01000000000000000~0101111111111111,即4000H~5FFFH; 01100000000000000~0111111111111111,即6000H~7FFFH; 第二片:10000000000000000~1001111111111111,即8000H~9FFFH; 2764(2): 10100000000000000~1011111111111111,即A000H~BFFFH; 11000000000000000~1101111111111111,即C000H~DFFFH; 11100000000000000~1111111111111111,即E000H~FFFFH。 Vcc G1 G 74LS138 G2A G2B Y3 Y2 C Y1 B A Y0 P2.7 P2.6 P2.5 P2.4~P2.0 ALE G74LS 373 8 OE 8031 EA P0 PSEN 8 5 8 A0~A7 CE A8~A12 2764(1) D0~D7 OE 8 8 8 5 8 5 5 A0~A7 A0~A7 CE CE A0~A7 A8~A12CE A8~A12 A8~A12 2764(4) 2764(2) 2764(3) OE D0~D7 OE D0~D7 OE D0~D7 8 8 8 上图为采用全译码法实现的4片2764扩展成32KB程序存储器。 8031剩余的高3位地址总线P2.7、P2.6、P2.5通过74LS138译码器形 成4个2764的片选信号。 由于采用全译码,每片2764的地址空间都是唯一的。它们分别是: 2764(1): 00000000000000000~0001111111111111,即0000H~1FFFH; 2764(2): 00100000000000000~0011111111111111,即2000H~3FFFH; 2764(3): 01000000000000000~0101111111111111,即4000H~5FFFH; 2764(4): 01100000000000000~0111111111111111,即6000H~7FFFH。 6.2.3 数据存储器扩展 数据存储器扩展与程序存储器扩展 基本相同,只是数据存储器控制信号一 般有输出允许信号/OE和写控制信号/WE, 分别与单片机的片外数据存储器的读控 制信号/RD和写控制信号/WR相连,其 它信号线的连接与程序存储器完全相同。 扩展数据存储器电路常用RAM芯片: 常用RAM芯片: Intel 6116(2KB)、 6264(8KB)、 62256(32KB)等。 8031(8051)扩展单片2KB RAM Intel 6116 扩展单片6116数据存储器 下图是两片数据存储器芯片6264与8051单片机的连接。6264是 8K8的静态数据存储器芯片,有13根地址线,数据线8根,一根输出 允许信号/OE和一根写控制信号/WE ,两根片选信号/CE1和/CE2 , 使用时都应为低电平。 P2.7 P2.6 P2.5 P2.4~P2.0 ALE 5 8 OE 8051 EA G 74LS 373 P0 RD WR 8 8 5 A0~A7 A8~A12CE1 6264(1) CE2 D0~D7 WE OE 8 8 5 A0~A7 A8~A12 CE1 6264(2) CE2 D0~D7 WE OE 8 P2.7为低电平0,两片6264芯片的地址空间为: 第一片:01000000000000000~0101111111111111,即4000H~5FFFH; 第二片:00100000000000000~0011111111111111,即2000H~3FFFH; P2.7为高电平1,两片6264芯片的地址空间为: 第一片:11000000000000000~1101111111111111,即C000H~DFFFH; 第二片:10100000000000000~1011111111111111,即A000H~BFFFH; 存储器综合扩展: 数据存储器和程序存储器的综合扩展。 1、同时扩展数据存储器和程序存储器: 程序存储器的读操作有PSEN信号控制, 数据存储器的读和写分别由RD和WR信号控制。 不会造成操作上的混乱。 2、通过扩展可读写存储器: (1)利用EEPROM芯片扩展;(速度较慢) 如:可扩展2816或2817等。 (2)改造RAM存储芯片。 如:可改造6116等。 同时扩展程序存储器和数据存储器 单片机连接 8KB EPROM 2764 和 8KB RAM 6264 各一片。 同时扩展两种存储器 扩展既可读又可写的程序存储器 EEPROM 既能作为程序存储器又能作数据存储器。 将程序存储器与数据存储器的空间合二为一。 片外存储器读信号= PSEN · RD 与门 MCS-51存储器结构和地址空间 60KB 128B 128B 64KB 4KB 4KB 128B 存储空间的区分: 内 部 外 部 数据 存储器 MOV指令 MOVX指令 RD、WR选通 程序 存储器 MOVC指令 EA=1 MOVC指令 PSEN选通 EA=0 内外程序存储器的衔接: 8051(4KB) 8031 60KB(1000H-FFFFH) 6.3 输入/输出口扩展 需要编址的子系统:存储器和接口电路。 一、存储器地址方式:统一编址 I/O接口共用存储器的地址空间,每个I/O端口视为一个存 储单元。 二、专用I/O地址方式:独立编址 有专用I/O控制信号和I/O指令。I/O接口独立编址,不占用 存储器的地址空间。如:Z80。 MCS-51、96为存储器地址方式(统一编址)。 MCS-51单片机有片内I/O接口和扩展I/O接口。 片内I/O接口寄存器在SFR中,使用片内数据存储器空间; 扩展I/O接口使用片外数据存储器地址空间: 输出指令: 输入指令: 片内寻址:MOV P1,A MOV A,P1 片外寻址:MOVX @DPTR,A MOVX A,@DPTR MOVX @R0,A MOVX A,@R0 I/O控制方式: 一、无条件传送(同步程序传送)方式 已知I/O设备准备就绪,可直接进行数据传送。 适用:1、具有常驻的或变化缓慢的数据信号 的设备。 如:指示灯、数码管等; 2、工作速度快,足以和单片机同步工作 的设备。 如:DAC等。 二、查询方式 (有条件传送方式) DB D6 AB 先查询I/O设备当前状态, 若准备就绪,则交换数据, 否则循环查询状态。 微型机 1.硬件查询电路 AB 设置状态锁存和数据锁存电路。 数据 端口 外部 设备 状态 端口 I/O接口 2.软件查询程序 先输入状态,决定是否进行数据传送。 INPUT:MOV WAIT:MOVX JB MOV MOVX DPTR,#SATUS A,@DPTR ACC.6,WAIT DPTR,#DATA A,@DPTR ;状态口地址 查询状态 准备就绪? ;数据口地址 查询方式只适用: 单道作业、规模比较小的单片机系统。 Y 输入/ 输出数据 N 三、中断方式(程序中断方式) 大多数时间计算机与外设并行工作,计算机不 必因等待而浪费资源。当外设准备就绪,向CPU 发出中断请求信号。CPU暂停当前程序,执行I/O 操作。当I/O操作结束,CPU仍继续被中断的工作。 四、直接存储器访问方式 (DMA—Direct Memory Access) 用于计算机与高速外设进行大批量数据交换, 由DMA控制器接管总线控制权,RAM与外设之间 直接数据传输,不需CPU的介入。 6.3.1 简单I/O口扩展 通常通过数据缓冲器、锁存器来扩展简单I/O接口。例 如:74LS373、74LS244、74LS273、74LS245等芯片都 可以作简单I/O扩展。实际上,只要具有输入三态、输出锁 存的电路,就可以用作I/O口扩展。 下图是利用74LS373和74LS244扩展的简单I/O口,其 中74LS373扩展并行输出口,74LS244扩展并行输入口。 74LS373是一个带输出三态门的8位锁存器,8个输入端 D0~D7,8个输出端Q0~Q7,G为数据锁存控制端,G为高 电平,则把输入端的数据锁存于内部的锁存器,/OE为输出 允许端,低电平时把锁存器中的内容通过输出端输出。 74LS244是单向数据缓冲器,带两个控制端1G和2G ,当 它们为低电平时,输入端D0~D7的数据输出到Q0~Q7。 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 锁存器 OE D0 D1 D2 74LS D3 D4 373 D5 D6 D7 G P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 L0 L1 L2 L3 L4 L5 L6 L7 8051 + WR P2.0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 RD + 1G 2G 74LS 244 D0 D1 D2 D3 D4 D5 D6 D7 缓冲器 K0 K1 K2 K3 K4 K5 K6 K7 +5V 图中,扩展的输入口接了K0~K7 8个开关,扩 展的输出口接了L0~L7 8个发光二极管,如果要实 现K0~K7开关的状态通过L0~L7发光二极管显示, 则相应的汇编程序为: LOOP:MOV DPTR,#0FEFFH MOVX A,@DPTR MOVX @DPTR,A SJMP LOOP 如果用C语言编程,相应程序段为: #include <absacc.h> //定义绝对地址访问 #define uchar unsigned char …… uchar i; i=XBYTE[0xfeff]; XBYTE[0xfeff]=i; …… 6.3.2 可编程I/O扩展(8255A) 一、8255A(可编程通用并行接口芯片)的结构与功能 二、结构: 1、 3个8位并行I/O接口PA、PB和PC: 包含I/O数据锁存器,控制寄存器和状态寄存器。 2、 2组控制:A组:PA和PC0~3; B组:PB和PC4~7: 三、工作方式: 1、方式0(基本I/O方式): A口、B口、C口均为数据I/O。输出锁存,输入三态, 不用联络信号。 适用于无条件或查询方式的数据传送。 2、方式1(选通I/O方式): A口和B口用于数据I/O,输入/输出均锁存, C口用于传 送联络信号,读C口可了解外设当前状态。 适用于查询或中断方式的数据I/O。 3、方式2(双向数据传送方式): A口为数据I/O,B口只能为方式0,C口用作A口双向传 送的联络信号线。 适用于查询或中断方式的数据I/O。 /CS A1 A0 /RD /WR I/O操作 0 0 0 0 1 读A口寄存器内容到数据总线 0 0 1 0 1 读B口寄存器内容到数据总线 0 1 0 0 1 读C口寄存器内容到数据总线 0 0 0 1 0 数据总线上内容写到A口寄存器 0 0 1 1 0 数据总线上内容写到B口寄存器 0 1 0 1 0 数据总线上内容写到C口寄存器 0 1 1 1 0 数据总线上内容写到控制口寄存器 四、8255A的引脚信号 1.数据线: D0~7:传送计算机与8255之间的数据、控制字和状态字。 PA0~7 PB 0~7 PC0~7:传送8255与外设之间的数据和联络 信息,PC0~7可用作数据线或联络线。 2.地址线: CS:片选线 A1、A0:口选线,寻址 PA、 PB、PC数据口和控制口。 3.读写控制线: RD、WR控制计算机与8255之 间的信息传送和流向。 4.复位线: RESET高电平复位,使内部寄 存器全部清零。 40脚 例题: 例:求8255的口地址: 解:A口 (7F00H); B口 (7F01H); C口 (7F02H); 控制口(7F03H)。 ABi: 15 A口: 0 B口: 0 C口: 0 控制口:0 14 1 1 1 1 13 1 1 1 1 12 1 1 1 1 11 1 1 1 1 P0 37 3 P2.7 Q1 A0 A1 CS 8255 80C51 10 9 8 7 6 5 4 3 2 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 Q0 10 00 01 10 11 7F00H 7F01H 7F02H 7F03H 五、8255A的控制字 8255A有两个控制字:工作方式控制字和C口按位置位/复位控制字。 方式选择控制字:D7=1 C口置位/复位控制字:D7=0 控制字 方式 置/复位 D7 1 0 D6 D5 A 组方式 D4 PA D3 D2 PC4~7 方式 位选择 1、C口按位置位/复位控制字 0 D6 D5 D4 D3 D2 D1 特征位0 这三位不用 位选择位 000:C口0位 001:C口1位 …… 111:C口7位 D0 0:复位 1:置位 D7位为特征位。D7=0表示为C口按位置位/复位控制字。 D6、D5、D4这三位不用 D3、D2、D1这三位用于选择C口当中的某一位。 D0用于置位/复位设置,D0=0则复位,D0=1则置位。 D1 PB D0 PC0~3 1/0 2、方式选择控制字: 8255A方式选择注意: 有三种基本工作方式: 方式0——基本的输入输出方式 方式1——选通的输入输出方式 方式2——双向传输方式 只有端口A能工作在方式2; 同一组的两端口可分别工作在输入和输出方式。 六、8255A的工作方式 1.方式0 方式0是一种基本的输入/输出方式。在这种方式下,三个端口都可 以由程序设置为输入或输出,没有固定的应答信号。方式0特点如下: (1)具有两个8位端口(A、B)和两个4位端口(C口的高4位和C口 的低4位)。 (2)任何一个端口都可以设定为输入或者输出。 (3)每一个端口输出时是锁存的,输入是不锁存的。 +5V K0 系统总线 8051 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8255A PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 L0 L7 K7 +5V 方式0输入/输出 时没有专门的应答 信号,通常用于无 条件传送。例如: 左图是8255A工作 于方式0的例子,其 中A口输入,B口输 出。 2.方式1 方式1是一种选通输入/输出方式。在这种工作方式下,端口A 和B作为数据输入/输出口,端口C用作输入/输出的应答信号。A口 和B口既可以作输入,也可作输出,输入和输出都具有锁存能力。 方式1输入: 无论是A口输入还是B口输入,都用C口的三位作应答信号,一 位作中断允许控制位。 8 INTE INTE & 8 PA0~PA7 PB0~PB7 PC4 STBA PC2 STBB PC5 IBFA PC1 IBFB PC3 INTRA PC6、PC7 A口输入 2 & PC0 INTRB I/O B口输入 各应答信号含义如下: /STB:外设送给8255A的“输入选通”信号,低电平有效。 IBF:8255A送给外设的“输入缓冲器满”信号,高电平有效。 INTR:8255A送给CPU的“中断请求”信号,高电平有效。 INTE:8255A内部为控制中断而设置的“中断允许”信号。INTE由 软件通过对PC4(A口)和PC2(B口)的置位/复位来允许或禁止。 方式1输出: 无论是A口输出还是B口输出,也都用C口的三位作应答信号,一 位作中断允许控制位。 8 INTE INTE & 8 PA0~PA7 PC7 OBFA PC6 ACKA PC3 INTRA PC4、PC5 2 A口输出 & PB0~PB7 PC2 ACKB PC1 OBFB PC0 INTRB I/O B口输出 应答信号含义如下: /OBF:8255A送给外设的“输出缓冲器满”信号,低电平有效。 /ACK:外设送给8255A的“应答”信号,低电平有效。 INTR:8255A送给CPU的“中断请求”信号,高电平有效。 INTE:8255A内部为控制中断而设置的“中断允许”信号,含 义与输入相同,只是对应C口的位数与输入不同,它是通过对 PC7(A口)和PC2(B口)的置位/复位来允许或禁止。 3.方式2 方式2是一种双向选通输入/输出方式。只适合于 端口A。这种方式能实现外设与8255A的A口双向数 据传送,并且输入和输出都是锁存的。它使用C口的 5位作应答信号,两位作中断允许控制位。 PA0~PA7 PC5 INTE1 PC4 & INTE2 STBA PC6 ACKA PC7 OBFA & 1 IBFA PC3 INTRA 七、8255A与MCS-51单片机的接口 1.硬件接口: 8255A与MCS-51单片机的连接包含数据线、地址线、控制线的连接。 WR WR RD RD P2.0 CS P0.7 D7 Q7 P0.6 D6 Q6 PA7-PA0 P0.5 D5 74LS Q5 P0.4 D4 Q4 P0.3 D3 373 Q3 P0.2 D2 Q2 A1 PB7-PB0 P0.1 D1 Q1 P0.0 DO G OE Q0 A0 D7 D6 D5 PC7-PC0 D4 8051 D3 D2 D1 D0 ALE EA GND 8255 GND 图中,8255A的数据线与8051单片机的数据总线相连,读、写信号线 对应相连,地址线A0、A1与单片机的地址总线的A0和A1相连,片选信号 /CS与8051的P2.0相连。则8255A的A口、B口、C口和控制口的地址分别是: FEFCH,FEFDH,FEFEH,FEFFH。 2.软件编程 如果设定8255A的A口为方式0输入,B口为 方式0输出,则初始化程序为: 汇编程序段: MOV A,#90H MOV DPTR,#0FEFFH MOVX @DPTR,A C语言程序段: #include <reg51.h> #include <absacc.h> …… XBYTE[0xfeff]=0x90; …… //定义绝对地址访问 Take a Rest