360 likes | 523 Views
4.3 输入 / 输出接口扩展. 问题的提出. MCS-51 系列单片机内部有 4 个双向的 8 位并行 I/O 端口: P0 、 P1 、 P2 和 P3 口。 在实际的应用系统中, P0 、 P2 、 P3 口往往用来代替系统总线使用,数据口仅剩下 P1 口了。另外,单片机内部 I/O 口的功能也过于简单,只有数据锁存和缓冲功能,而没有状态寄存和命令寄存功能,难以满足复杂的 I/O 操作的要求。 鉴于单片机的 I/O 资源比较有限,在实际应用中不得不使用扩展的方法,以增加 I/O 口的数量,强化 I/O 的功能。 常用的 I/O 扩展有以下两种形式:
E N D
4.3 输入/输出接口扩展 问题的提出 • MCS-51系列单片机内部有4个双向的8位并行I/O端口:P0、P1、P2和P3口。 • 在实际的应用系统中,P0、P2、P3口往往用来代替系统总线使用,数据口仅剩下P1口了。另外,单片机内部I/O口的功能也过于简单,只有数据锁存和缓冲功能,而没有状态寄存和命令寄存功能,难以满足复杂的I/O操作的要求。 • 鉴于单片机的I/O资源比较有限,在实际应用中不得不使用扩展的方法,以增加I/O口的数量,强化I/O的功能。 • 常用的I/O扩展有以下两种形式: • 简单I/O接口芯片的扩展 • 可编程I/O接口电路的扩展
什么样的芯片是简单芯片?复杂芯片又是什么样的?什么样的芯片是简单芯片?复杂芯片又是什么样的? • 简单芯片:是指那些虽具有数据缓冲或锁存功能,但自身仅有数据的输入或输出及选通端或时钟端,却没有地址线和读写控制线,如采用TTL或CMOS数字集成电路构成的三态门、寄存器、三态缓冲寄存器等中小规模的集成电路芯片。 • 可编程逻辑器件: • 那些不仅具有数据的输入或输出、具有选通端或时钟端,而且还具有地址线和读写控制线的芯片,他们一般具有片内的状态字寄存器、命令字寄存器,允许通过软件编程来改变它的接口功能或状态。如:intel 8255、8155 、8279 etc.
4.3.1简单I/O接口芯片的扩展 • 简单的I/O口扩展通常是采用TTL或CMOS电路锁存器、三态门等作为扩展芯片(74LS244、74LS245、74LS273、74LS373、74LS377等),通过P0口来实现扩展的一种方案。它具有电路简单、成本低、配置灵活的特点。 • 简单的I/O口扩展主要包括: • 缓冲器扩展输入口(三态门: 74LS244、74LS245等) • 输入接口的主要功能:解决数据输入的缓冲问题,如74ls244(具有三态缓冲功能,这样才可以和数据总线相连)。 • 锁存器扩展输出口(锁存器: 74LS273、74LS373、 74LS377等) • 输出接口的主要功能:进行数据的保持(数据锁存)。
缓冲器扩展输入口 • 利用74LS244进行输入口的扩展 74LS244引脚封装图 MCS-51与74LS244的接口电路图
74LS244是一种8位的三态缓冲器。当它的控制端1G(2G)74LS244是一种8位的三态缓冲器。当它的控制端1G(2G) • 为低电平时,输出等于输入;当它的控制端1G(2G)为高电平 • 时,输出呈高阻态。 • 在上图的电路中,P2.7与RD相或后作为244的使能信号, • 单片机的P0口与74LS244的8位输出端相连,所以74LS244的 • 地址为:7FFFH(P2.7=0即A15=0,A14..A0为任意,这里取1, • 得到7fffh,当然,0000h~7fffh中任一地址均可)。 • 当单片机从74LS244读取数据时应该为: • MOV DPTR,#7FFFH ;将74LS244的口地址送入DPTR • MOVX A,@DPTR ; 74LS244的端口读取数据到ACC • ;执行时,RD有效,p2.7=0,选通了74ls244。 • 注意: MOVX A,@DPTR; 读操作,产生 RD 低电平信号
锁存器扩展输出口 • 利用74LS273进行输出口的扩展 74LS273引脚封装图 MCS-51与74LS273的接口电路图
74LS273是一种8D触发器器。当它的控制端信号有效且触发端信号有效时,输入D1-D8端的数据被锁存到8D触发器中并形成输出Q1-Q8。 • 在上图的电路中,P2.7与WR相或后作为74LS273的锁存信号(clk下降沿有效),单片机的P0口与74LS273的8位输出端相连,所以74LS273的地址为:7FFFH。(仅使P2.7=0,地址可以是0000h~7fffh中的任一个。) • (仅当p2.7=0且WR=0时,clk才为0,数据被打入。) • 所以,当单片机从74LS244输出数据是应该为: MOV DPTR,#7FFFH ;将74LS244的口地址送入DPTR MOVX @DPTR,A ;从ACC 向74LS244的端口写数据 ; P2.7=0&WR=0,数据被打入到2732锁 存器 注意: MOVX @DPTR , A; 写操作,产生 WR 低电平信号
一、可编程芯片8155的扩展 • Intel 8155是一个具有RAM、I/O和计数器的通用可编程接口芯片。其具有的资源为 • 256B的静态RAM; • 两个可编程的8位并行I/O口PA和PB; • 一个可编程的6位并行I/O口PC; • 一个可编程14位减计数器TC; • 8位地址锁存器。 • 示意图 • 是指芯片功能可由指令来确定,即需要对其编程。
IO/M 256 字节 A PA0~PA7 AD0~AD7 静态 RAM CE PB0~PB7 B ALE RD 14 位 定时 WR PC0~PC7 计数器 C RESET TIMER IN VCC(+5 V) VSS(GND) TIMER OUT 8155的引脚封装图 8155的内部接口图
1. 8155的内部结构 • 8155各引脚的功能为: • 地址/数据线AD0~AD7(8条):是低8位地址线和数据线的共用输入总 • 线,常和MCS-51单片机的P0口相连,用于分时传送地址和数据; • PA0~PA7、PB0~PB7:为A、B口线,用于和外设之间传递数据; • PC0~PC5为C端口线,既可与外设传送数据,也可以作为A、B口的控制 • 联络线; • CS:片选线,低电平有效。
RESET:复位线,通常与单片机的复位端相连。 • ALE:地址锁存线,高电平有效。 • IO/M:RAM或I/O口的选择线。当为0时,选中8155的256 B RAM;当为1时,选中8155片内3个I/O端口以及命令/状态寄存器和定时/计数器。 • RD和WR:读/写线,控制8155的读、写操作。 • TMRIN(TI):定时/计数器的脉冲输入端。 • TMROUT(TO):定时/计数器的输出信号端。 • VCC:电源端。 • GND:接地端。
2. 8155的RAM和I/O口地址编码 • 8155当IO/M为0时,单片机对8155的RAM进行操作,共256B,低八位的地址为:00H—0FFH。 • 8155当IO/M为1时,单片机对8155的I/O口进行操作。 8155内部寄存器地址分配表
3. 8155的命令字和状态字 • 芯片8155 的I/O口和定时器/计数器的工作方式可以通过对8155的命令寄存器写入控制字来实现。 • 8155的命令寄存器和状态寄存器使用同一个地址。 • 8155的命令字命令字主要规定了8155的I/O口和定时器的工作方式。 • 8255的状态字状态字的内容包含8155的I/O口的工作状态标志。
MCS-51单片机与8155的接口 PA口 PB口 PC口
IEB TM2 TM1 IEA PC2 PC1 PB PA PA A 口方式 0:输入 1:输出 B 口方式 方式1:A、B口基本I/O;C口输入 00 方式2:A、B口基本I/O;C口输出 11 方式3:A口选通I/O;B口基本I/O 01 方式4:A、B口选通I/O 10 0:禁止中断 A口 B口 1:允许中断 00:空操作 01:停止计数 计数器 10:计满后停止 方式 11:开始计数 8155的命令字格式
-- TIMER INTEB BFB INTRB INTEA BFA INTRA A口中断请求标志: 0:无; 1:有 A口缓冲器: 0:空; 1:满 A口中断允许: 0:禁止; 1:允许 B口中断请求标志: 0:无; 1:有 1:满 0:空; B口缓冲器: B口中断允许: 0:禁止; 1:允许 定时器中断标志: 1:有定时器溢出中断 0:读状态字后或硬件复位后 8155的状态字格式
8155的I/O的工作方式 • 基本I/O方式:联络线由程序指定,对计数器输入输出不起控制作用,没有中断能力,输出联络线由软件程序来控制。 • 选通I/O方式:由PC口的低三位作联络线使用,其余位作I/O线;输入联络线可以起选通数据锁存作用;中断时有中断请求信号产生;各个联络线为: • INTRA:中断请求输出标志。 • BFA:PA口缓冲器/空输出信号。 • STBA:数据选通输入信号。
4. 8155的定时器/计数器 • 8155片内的定时器/计数器是一个14位的减计数器。计数器分为高6 • 位和低8位寄存器,它的计数初值有程序预置。它的格式为: 高字节寄存器(M2和M1是工作方式码) 低字节寄存器(T0—T13为计数器的初值)
M2 M1 方 式 波 形 0 0 0 1 1 0 1 1 单次方波 连续方波 单个脉冲 连续脉冲 8155定时器/计数器四种操作方式和输出波形
5. 8155的应用 • 1)8155RAM的使用例题:假定在MCS-51单片机的内部RAM中,从30H开始存放一组数据,字节数为50,要求将该组数据存入8155 RAM中,起始地址为7E00H。 • 程序为:………………..RAMWR:MOV R0,#30H • MOV DPTR,#7E00H MOV R2,#50 RAMW:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR • DJNZ R2,RAMW ………………… 思考:如果要把8155 RAM中,从地址为7E00H开始的50个数据存入单片机的30H开始的数据存储单元中,应该如何处理?
2) 8155的I/O口的使用 • 例题:假定8155的PA口接8个乒乓开关,8155的PB口接8个指示灯,要求PB显示PA口的开关状态。命令/状态寄存器地址为7E00H,PA地址为7E01H ,PB地址为7E02H 。8155的命令字为:02H( PA和 PB为基本I/O方式)。 • 程序为: • ORG 0000H MOV DPTR,#7E00H MOV A,#02H MOV @DPTR,ALOOP: • MOV DPTR,#7F01H MOVX A,@DPTR • INC DPTR MOVX @DPTR,A • SJMP LOOP END 写命令字,送入命令/状态寄存器 8155的A口数据送入ACC ACC数据写入8155的B口 循环执行
二、可编程芯片8255的扩展 • 8255是一个通用可编程接口电路。其具有的资源为: • 三个可编程的8位并行I/O口PA、PB和PC口; • PC口可以按位进行操作。 数据总线 PA口 控制总线 PB口 PC口 8255A的引脚封装图
I/O A A 组 组 控制 A PA7~PA0 端口 (8) A I/O 组 数据 C 端口 总线 PC7~PC4 (4) 上半部 D7~D0 缓冲 B I/O 组 C 端口 PC3~PC0 (4) 下半部 B 组 I/O RD B 组 读/写 B 端口 WR A0 控制 控制 (8) PB7~PB0 A1 逻辑 RESET CS 8255的内部接口图
1. 8255的内部结构 • 8255各引脚的功能为: • 地址/数据线D0~D7:是低8位地址线和数据线的共用输入总线,常和MCS-51单片机的P0口相连,用于分时传送地址和数据; • PA0~PA7、PB0~PB7:为A、B口线,用于和外设之间传递数据; • PC0~PC7为C端口线,既可与外设传送数据,也可以作为A、B口的控制联络线; • CS:片选线,低电平有效。 • RESET:复位线,通常与单片机的复位端相连。 • A0和A1:I/O口的选择线,通过它可以选择PA口、PB口、PC口和控制寄存器。 • RD和WR:读/写线,控制8255的读、写操作。 • VCC:电源端。 • GND:接地端。
A1 • A0 • RD • WR • CS • 操作 • 0 • 0 • 0 • 1 • 0 • 从PA口输入 • 0 • 1 • 0 • 1 • 0 • 从PB口输入 • 1 • 0 • 0 • 1 • 0 • 从PC口输入 • 0 • 0 • 1 • 0 • 0 • 从PA口输出 • 0 • 1 • 1 • 0 • 0 • 从PB口输出 • 1 • 0 • 1 • 0 • 0 • 从PC口输出 • 1 • 1 • 1 • 0 • 0 • 从命令口输入 • X • X • X • X • 1 • 高阻态 • 1 • 1 • 0 • 1 • 0 • 非法态 • X • x • 1 • 1 • 0 • 高阻态 2. 8255A的端口选择和基本操作
3. 8255A的控制字 • 8255有两个控制字: • 方式控制字方式控制字用于设定单片机的PA口、PB口和PC口的工作方式。 • 置位/复位控制字置位/复位控制字用于对8255A的PC口按位进行操作。
D7 D6 D5 D4 D3 D2 D1 D0 B 组 C 0: 口 输出 4 低 位 1: 输入 0: 输出 B 口 1: 输入 0: 0 模式 方式 1: 1 模式 选择 A组 0: 输出 C 口 4 高 位 1: 输入 0: 输出 A 口 1: 输入 00: 0 模式 01: 1 方式选择 模式 1*: 2 模式 1: 方式标志 方式控制字
D7 × × × D3 D2 D1 D0 0: 复位 1: 置位 位选择 PC0 000 PC1 001 PC2 010 PC3 011 PC4 100 PC5 101 PC6 110 PC7 111 0: 位操作 置位/复位控制字
4. 8255A的工作方式 • 8255A有3种工作方式 • 工作方式0基本的输入/输出方式 • 工作方式1选通工作方式 • 工作方式2双向传送方式,只有PA口工作于此方式。
5. 8255A和MCS-51单片机的接口 显示输出 开关量输入
6.8255A应用举例: • 例1:在上图所示的8255与单片机的连接电路中, • 8255A的PC口(7FFEH)作为开关量的输入; • 8255A的PA口(7FFCH)作为信号的输出; • 要求8个数码管显示PC口输入的外部信号状态。 • 8255A的工作方式字设定: • 由题意可知8255的工作方式字应该为:89H
8255初始化 选中8255 的PC口 从8255的PC口 读入数据 选中8255 的PA口 从8255的PA口 输出数据 流程图:
程序清单: • ORG 0000H • MOV DPTR,#7FFFH • MOV A,#89H • MOVX @DPTR,A • LOOP:MOV DPTR,#7FFEH • MOVX A,@DPTR • MOV DPTR,#7FFCH • MOVX @DPTR,A • SJMP LOOP • END 写命令字,送入命令/状态寄存器 8255的C口数据送入ACC ACC数据写入8255的A口 循环执行
例2:在8255与单片机的连接电路中,使用置位/复位控制字实现在8255A的PC7输出方波。例2:在8255与单片机的连接电路中,使用置位/复位控制字实现在8255A的PC7输出方波。 • 解:8255A的控制寄存器(7FFEH)的设定D7:恒为0;D6-D4:未使用;D3-D1:PC口的位选择;D0:置位时为1,复位时为0。 • 所以: • 当PC7输出高电平时,控制寄存器应该为:0FH;PC7输出低电平时,控制寄存器应该为:0EH。
程序清单: • ORG 0000H MOV DPTR,#7FFFHLOOP: MOV A,#0FH MOVX @DPTR,AMOV R2,#80H DJNZ R2,$ MOV R2,#80H MOV A,#0EH MOVX @DPTR,ADJNZ R2,$ SJMP LOOP END 写PC7=1的命令字 延时 写PC7=0的命令字 循环执行
小 结 • 本章要求: • 掌握MCS-51单片机的三总线形成; • 了解常用的程序存储器、数据存储器,以及它们与单片机如何进行连接,连接好的存储单元如何确定其地址; • 掌握用缓冲器、锁存器等扩展简单I/O接口电路; • 掌握8155可编程接口芯片的基本性能、端口与存储单元的编址方法,以及与单片机的连接电路,口的基本应用; • 了解8155定时器的应用; • 掌握8255A的功能及应用。