840 likes | 1.04k Views
微型计算机技术. 教 学 指 导 (六). 太原广播电视大学 郭建勇. 第 6 章 常用可编程外围接口芯片 内容提要:本章主要介绍微处理器常用的外围接口芯片,定时器 8253 ,并行的外围接口芯片 8255 和串行的通讯接口芯片 8251A 。介绍每种芯片的结构框图,各个部件的功能和用途,以及它们的使用方式。 学习目标:通过学习这些接口芯片,要求掌握不同外围接口芯片在使用时的工作方式。熟练掌握它们在微机接口中的运用环境和使用时的方式控制,以及不同芯片的编程命令字的设置。进一步了解每种芯片的基本的编程步骤及各种方式命令字的使用。.
E N D
微型计算机技术 教 学 指 导(六) 太原广播电视大学 郭建勇
第6章 常用可编程外围接口芯片 • 内容提要:本章主要介绍微处理器常用的外围接口芯片,定时器8253,并行的外围接口芯片8255和串行的通讯接口芯片8251A。介绍每种芯片的结构框图,各个部件的功能和用途,以及它们的使用方式。 • 学习目标:通过学习这些接口芯片,要求掌握不同外围接口芯片在使用时的工作方式。熟练掌握它们在微机接口中的运用环境和使用时的方式控制,以及不同芯片的编程命令字的设置。进一步了解每种芯片的基本的编程步骤及各种方式命令字的使用。
6.1 定时器/计数器8253的结构与编程 • 在微机及一些控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。 • 定时的方法主要是两种: 软件定时:利用指令的执行时间设计循环程序,使CPU执行延迟子程 序的时间就是定时时间。缺点:执行延迟时,CPU一直被占用,降低了CPU的效率。 硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU时间,如利用定时器/计数器产生中断信号,可建立多作业环境,故提 高了CPU效率。
1. 计数: • 对事件的个数进行计数。 • 正计数:关心记录事件的次数。 • 倒计数:关心预先设定事件次数发生完的时刻。 • 可由硬件计数器实现,事件作为计数器的时钟,此时事件的出现频率不一定一成不变。 2. 定时: • 取得给定的时间间隔。 • 延时:求锝某事件发生后间隔一定时间的时刻。 • 时标:求得给定时间间隔的连续脉冲。 • 可由硬件计数器来实现,一定频率的信号作为计数器的时钟,如果只计数到就终止,即为延时。如果连续不断的计数即可输出时标。
可编程计数器/定时器的用途 计数功能 作为计数个数到中断信号。 记录外部特定时间发生的个数。 定时功能 作为周期性定时中断信号。 用于分时性操作系统。 用作系统时钟基准。 作为一个可编程波特率发生器。用于异步串行通讯。 作为I/O设备输出定时信号。实现外设与CPU的同步。 实现节约CPU的时间延时。 作为音源。
6.1.18253功能及结构框图 • 1.8253的主要功能 • (1)每片上有3个独立的16位的计数器通道。 • (2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。 • (3)每个通道都有6种工作方式,都可以通过程序设置或改变。 • (4)每个计数器的速率可高达2MH2。最高的计数时钟频率为2.6MHz。 • (5)所有的输入、输出都是TTL电平,便于与外围接口电路相连接。 • (6)单一的+5V电源
CLOCK0 D7 ~D0 数据总线 缓冲器 计数器0 GATE0 OUT0 RD 计数器1 读/写 逻辑 WR A1 A0 计数器2 控制寄存器 • 2.8253的结构框图
四大部分:数据总线缓冲器、读写控制逻辑、控制字寄存器以及三个独立的16位的计数器通道。这三个计数器分别是计数器0通道、计数器1通道和计数器2通道。四大部分:数据总线缓冲器、读写控制逻辑、控制字寄存器以及三个独立的16位的计数器通道。这三个计数器分别是计数器0通道、计数器1通道和计数器2通道。 • (1)数据总线缓冲器:8位的双向三态缓冲器。用于暂存数据,使用在以下几个方面: • ①CPU在初始化编程时,向8253写入控制字。 • ②CPU向某一通道写计数初值。 • ③CPU从某一通道读计数初值。 • (2)读/写控制逻辑电路:接受输入的RD、WR、CS、A1、A0等信号组合产生出对8253要执行的操作,见操作表。 • (3)控制字寄存器:只能写入,不能读出。8初始化编程时,写入控制字决定通道的工作方式。 • (4)3个计数器:分别为0、1和2,是3个独立的计数/定时通道,都可按不同的方式工作。每个计数器内部都包含一个16位的预置初始值寄存器。一个可预置数减法计数器和一个锁存器。
信号名 引 脚 信号方向 功 能 定 义 • D7—D0 1—8双向8位 三态的数据线 • CLK0 9 输入 计数器0的时钟输入OUT0 10输出 计数器0的输出 • GATE0 11 输入 计数器0的门控输入CLK1 15输入 计数器1的时钟输入OUT1 13输出 计数器1的输出GATE2 14输入 计数器1的门控输入 • CLK2 18输入 计数器2的时钟输入OUT2 17输出 计数器2的输出GATE2 16输入 计数器2的门控输入,CS 21输入 片选信号, • RD 22输入 读信号,低电平有效。CS=0 ,RD=0时, • 读取某个计数器当前的计数值。 • WR 23输入 写信号,低电平有效。CS=0、WR=0时, • 写入控制字或计数器置初值。 • A1,A0 20,19输入 A1,A0的组合对3个计数 • 和控制器寄存 器进行寻址。
6.1.38253编程命令字和工作方式 • 1.初始化编程的原则 ’ • 8253的控制字寄存器和3个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个寄存器以及执行什么操作。因此8253在初始化编程时并没有严格的顺序规定,但是在编程时,必须遵守两条原则: • ①在对某个计数器设置韧始值之前,必须先写入控制字。 • ②在设计初始值时,要符合在控制字中规定的格式。 • 作定时器时初值的确定:当计数器装入初值后,在GATE端由低变高时,由CLK脉冲触发开始,自动计数,当汁数变到0时,由OUT端发定时时间到信号。计数器的计数初值n(时间常数)与定时时间t及时钟周期TCK之间的关系是 : t n= TCK
2.8253的初始化编程 • (1)设置控制命令字:用来选择计数器,设置工作方式和计数格式。 • D7D6位(SC1,SC0):用于选择计数器,根据这2位的编码来确定使用的是哪一个计数器。 • D5D4(RW1,RW0):用于确定读/写的格式。 • D3~D1位(M2,M1,M0):这三位用来指定计数器的工作方式,8253的计数器共有6种工作方式。 • D0位(BCD):用来选择计数的类型,确定计数器是采用二进制计数还是采用二~十进制计数。 • (2)设置初始值命令。 • (3)锁存命令:读计数器的值时必须先用锁存命令将当前计数值在输出锁存器中锁定。否则,计数器的数值有可能正处在改变过程中。这样输入可能得到一个不确定的结果。
D7 SC1 D6 SC0 D5 RW1 D4 RW0 D3 M2 D2 M1 D1 M0 D0 BCD 00:计数器0 01:计数器1 10:计数器2 11:无定义 00:计数器0 0:二进制 1:BCD码 00:锁存计数值 000:方式0 01:读/写低八位 001:方式1 10:读/写高八位 ×10:方式2 11:先读/写低八位 ×11:方式3 后读/写高八位 100:方式4 • 101:方式5 • 8253控制字的格式 01:计数器1 10:计数器2 11:无定义
6.1.4 8253工作方式与工作时序 • 8253有6种工作方式,对它们的操作都遵守以下3条基本原则: • (1)当控制字写入8253时,所有的控制逻辑电路自动复位,这时输出端OUT进入初始态。 • (2)当初始值写入计数器以后,要经过一个时钟周期,减法计数器才开始工作,时钟脉冲的下降沿使计数器进行减1计数。计数器的最大初始值是0,用二进制计数时0相当于216,用BCD码时,0相当于104。 • (3)对于一般情况下,在时钟脉冲CLK的上升沿时,采样门控信号。对门控信号(GATE)的触发方式是有具体规定的: • 门控信号为电平触发的有:方式0,方式4。 • 门控信号为上升沿触发的有:方式1,方式5。 • 门控信号可为电平触发也可为上升沿触发的有:方式2,方式3。 • 计数方式的有:方式0,方式1,方式4,方式5 • 定时方式的有:方式2,方式3。
8253门控信号(GATE)的控制功能 • 方式 信号状态 • 低电平或负跳变 正跳变 高电平 • 0 禁止记数 ——允许记数 • 1 —— 1.初始化,启动记数 —— • 2.下一个脉冲输出变低 • 2 1.禁止记数 初始化,启动记数 允许记数 • 2.输出变高 • 3 1.禁止记数 初始化,启动记数 允许记数 • 2.输出变高 • 4 禁止记数 ——允许记数 • 5 ——初始化,启动记数 ——
1.方式0(计数结束产生中断的计数器) • 写入方式控制字后,输出端OUT为低电平;写入计数常数后,开始计数。计数器减为0之前,输出端OUT维持低电平。当计数值为0时,输出端OUT才变为高电平,向CPU发出中断请求,直到CPU写入新的控制字或者写入新的计数值为止。 n=4 CW WR CLK GATE 4 3 2 1 OUT
CW n=3 WR • 方式0可由门控信号控制暂停,GATE为低电平时,计数器暂停,GATE信号变高后,就接着计数。 CLK GATE 3 2 2 1 OUT
CW n=3 n=5 WR • 2.方式1(可重复编程的单脉冲) • 设定工作方式和写入计数值后,OUT输出高电平,GATE(触发信号)变为高电平后,OUT变为低电平,开始计数。当计数器减到0时,OUT才输出高电平。输出低电平期间,写入新计数值,不会影响原记数过程。只有第一次计数完,GATE再来一个正跳变时才使用新的计数值计数 CLK GATE 3 2 1 5 OUT 开始记数 记数结束 开始记数
CW n=3 WR • 若在第一次计数末完成之前,GATE又产生正跳变(即下一个脉冲信号又到来)时,则从新的GATE的上升沿以后,开始重新计数,OUT端输出的低电平保持不变,2次的计数过程合在一起,因此使输出的负脉冲宽度加宽了 CLK GATE 3 2 1 3 2 1 OUT
CW n=3 WR • 3.方式2 (分频器) • 写入方式2的控制字后,OUT变高,设GATE为高先到,计数器对CLK计数,设计数初值为N。当计数器计到(N一1)个CLK信号时,OUT输出变低,计数器的值为l。最后一个CLK信号输入后,计数器减到0,OUT回到高,计数器又自动从初值开始计数。因此OUT端在每N个CLK信号中输出一个宽度等于CLK信号周期的负脉冲。 • 负脉冲的周期=计数值N×时钟CLK的周期T。 CLK GATE 3 2 1 3 2 1 OUT 重新记数 记数结束 重新记数
CW n=3 WR CLK • 计数过程中要求门控脉冲GAT置保持为高,当GATE为低电平时,则计数被中止暂停,在GATE再变高后,计数器又被置入初值,重新计数。 GATE 2 3 2 2 3 2 1 OUT 重新记数 方式2输出负脉冲的周期为CLK周期的N倍, 频率是1/N。称为分频器,可以用来给自动控 制中的实时检测,实时控制提供时钟信号。
CW n=4 WR • 4.方式3(方波发生器) • 采用方式3工作时,计数器输出为方波信号(GATE始终为高电平) 。当计数值为偶数时,在前N/2计数期间,OUT输出高电平,而后N/2个计数期间,OUT输出为低电平,对称方波。 CLK GATE 4 2 4 2 4 2 4 2 OUT
CW n=5 WR • 记数值为N奇数时的波形 • 当计数值为奇数时,在前(N+1)/2计数期间,OUT输出高电平,而后(N-1)/2个计数期间,OUT输出为低电平。 CLK GATE 4 2 0 4 2 4 2 0 OUT 高电平宽度比低电平宽度大一个时钟周期的近似方波。 实际上由于时钟周期很小,几乎没什么差别。
CW n=4 WR • 方式3计数时要求GATE为高电平,当GATE为低电平时,停止计数。若OUT为低电平, GATE变为低电平时,OUT立即变高,计数器将重新装入初始值,重新计数。 CLK GATE 4 2 4 2 2 2 4 2 4 2 OUT
CW n=3 WR • 5.方式4(软件触发选通) • 当方式4的控制字写入8253后,计数器输出OUT为高电平。在写入计数初值后,而且GATE为高电平时,开始计数,计数到0后输出一个时钟周期的低电平脉冲。门控信号GATE=1时允许计数,GATE=0禁止计数。 CLK GATE 3 2 1 0 OUT 软件触发选通体现在当GATE为高电平时,写 入计数初值后开始计数。
CW n=4 WR • 6.方式5[硬件触发选通) • 当写入方式5的控制字及计数常数后,输出OUT为高电平。只有在门控信号GATE上升沿到来时才开始作减1计数,计数到达0时输出一个时钟周期宽度的负脉冲。 CLK GATE 3 2 1 0 3 OUT 硬件触发选通:GATE信号一般由硬件产生。
CW n=3 WR • 计数器一旦开始计数以后,将不受GATE信号变成低电平的影响,但如果GATE信号又产生了正跳变的话,则不论计数是否完成,又将给计数器置人初值,重新开始新一轮计数。 CLK GATE 3 2 3 2 1 0 OUT 新计数
6.1.5 8253初始化编程 • 要使用8253首先要对它进行初始化编程,编程时主要是写入每个计数器的控制字和计数初值,初始化的步骤是: • (1)写入控制字:选择计数器和规定计数器的工作模式。 • (2)写入计数初值。若规定只写低8位,高8位自动置0。若规定写16位,则先写低8位,后写高8位。 • 例:设置计数器0,工作在方式3,按二进制计数,计数值200。 • 计数器0 先写低8位,后写高8位 方式3 二进制计数 • 程序段如下:MOV AL,36H ;控制字送AL • MOV DX,CRLP ;控制口地址送DX • OUT DX,AL ;控制字送控制寄存器 控制字 0 0 1 1 0 1 1 0 36H 设控制口地 址为CRLP。
CPU在读取任一通道的随机计数值时,需将当前的计数值锁存。实现锁存的方法有2种: • (1)利用GATE信号的变化使计数过程暂停。 • (2)向8253输出一个通道控制字(D5D4=00) ,命令8253计数器中的锁存器锁存。 • 其程序如下: • MOV AL,00H ;O号通道, D5D4=00锁存命令。 • MOV DX,CRLP ;控制口地址送DX • OUT DX,AL ;控制字送控制口 • IN AL,PRT0;读计数器0的低8位 • 当前计数值 • XCHG AL,AH ;低8位当前计数值暂存AH • IN AL,PRT0;读高位当前计数值 • XCHG AL,AH ;利用交换指令使计数值的低8位送AL, • 高8位送AH 设PRT0为计数 器0的口地址。
6.1.6 8253编程应用举例 • 在一个实际的数据采集系统中,要求5s钟采一个数,现场的主时钟的振荡频率为2.5MHz。 • 分析:选择工作方式3(方波发生器),连续工作对2.5M的脉冲分频。 • 时钟周期Tck=l/2.5×106 • 计数初值n=T/Tck=5÷(l/2.5×106 )=1.25×107 • 一个计数器最多的分频次数是65536,是不够用的。采用两级计数器,用计数器0的输出OUT0作为计数器1的输入CLK1。 • 计数器0的计数值为50000;C350H计数器1的250;FAH。则有: • 总的计数值=50000×250=1.25 ×107 • 计数器0:方式3(方波发生器)控制宇36H • 计数器1:方式2(分频器)控制字54H • 设:控制口地址:CRPT;0号计数器:PRT0;1号计数器:PRT1
实现上述过程的程序如下: • MOV AL,36H • MOV DX,CRPT • OUT DX,AL ;0号计数器方式3 • MOV AL,50H • MOV DX,PRT0 • OUT DX,AL ;计数值低8位 • MOV AL,C3H • OUT DX,AL ;计数值高8位 • MOV AL,54H • MOV DX,CRPT • OUT DX,AL ; 1号计数器方式2 • MOV AL,FAH • MOV DX,PRT1 • OUT DX,AL ;计数值低8位 2.5MHZ 8253 CLK0 GATE0 +5V OUT0 CLK1 GATE0 +5V OUT0 5S脉冲
6.2 并行外围接口8255A的结构与编程 • 6.2.1 并行通信的简单原理 • 中央处理器(CPU)和外部设备进行数据传输,都采用接口电路和CPU相连。 • 接口方式:串行通信接口和并行通信接口。 • 状态端口:状态信息表示外设当前所处的工作状态。 • 接口: 数据端口:数据信息进行数据传输。 • 地址端口:控制信息控制外设接口的工作方式等。 • 典型的并行接口:有一个控制寄存器,CPU对外设的操作命令都寄存在控制寄存器中。一个状态寄存器,主要是用来提供外设的各种状态位,以供CPU来查询。另外在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器的作用是用来暂存数据。主要是用来匹配CPU和外设的数据处理速度的。
并行接口原理结构图 数据总线 输入数据 输 入 设 备 控制寄存器 准备好输出 输入数据准备好 准备好输入 状态寄存器 输入回答 中断请求 输入缓冲寄存器 CPU 复位 输出缓冲寄存器 RD 输出数据 输 出 设 备 WR M/IO 地址 译码器 输出数据准备好 CS 地址总线 输出回答 A0 A1
数据输入: • (1)外设先使状态线“输入数据准备好”为高电平(有效); • (2)数据接收到输入缓冲寄存器中; • (3)把“输入回答”信号置成高电平(有效),并发给外设; • (4)外设接到回答信号后,将撤消“输入数据准备好”的信号。 • (5)当接口收到数据后,会在状态寄存器中设置“准备好输入”状态位,以便CPU对其进行查询或中断输入。 • 数据输出: • (1)当外设从接口接收到一个数据后,接口的输出缓冲寄存器“空”,使状态寄存器“输出数据准备好”状态位为高电平有效; • (2)CPU将输出数据送到接口的输出缓冲寄存器; • (3)接口向外设发送一个启动信号,启动外设接收数据; • (4)外设接收到数据后,向接口回送一个“输出回答”信号; • (5)接口电路收到该信号后,自动将接口状态寄存器中的“准备好输出”状态位重新置为高电平“l”。
6.2.2 8255A结构框图及功能部件说明 • 8255A是为Intel公司的微处理机配套的通用可编程并行接口芯片,可编程的I/O引脚有24条,分为2组,每组12条,并有三种工作方式。 • 芯片的主要技术特性是: • ①输入、输出电平与TTL电平完全兼容; • ②改善了时序特性; • ③直接位的置1/置0功能,便于实现控制性接口使用; • ④单一的+5V电源。 • 8255A的内部结构:
内部逻辑 外设接口 CPU接口 端口 A(8) PA7-PA0 A组 控制 PC7-PC4 端口C 上半部 (4) 数据 总线 缓冲器 DB 8位内部 数据总线 端口C 下半部 (4) PC3-PC0 RD 读/ 写 控制 逻辑 WR 端口 B(8) A0 B组 控制 A1 PB7-PB0 REST CS 8253A内部结构
1.三个独立的数据端口 • ①A端口:A端口对应一个8位的数据输入锁存器和一个8位的数据输出锁存和缓冲器。用于双向的数据传输,有锁存功能。 • ②B端口和C端口:这两个端口分别是由一个8位的数据输入缓冲器和一个8位的数据输出锁存和缓冲器组成。输出有锁存功能;输入无锁存。 • 2。A组控制电路和B组控制电路 • A组控制电路控制A端口和C端口的高4位(PC4一PC7)。 • B组控制电路控制B端口和C端口的低4位(PC0一PC3)。 • 控制电路的作用是:接收CPU输出的方式控制命令字;接收来自读/写控制逻辑电路的读/写命令;决定A组和B组的工作方式和读/写操作。 • 3.读写控制逻辑电路 • 完成内部三个数据端口的译码工作,由CPU的地址总线Al、AO,8255A的片选信号CS和RD、WR信号组合后产生控制命令,并将产生的控制命令传送给A组和B组的控制电路,从而完成对数据信息的传输控制。
8255A的控制信号与执行的操作之间的对应表 • CS RD WR A1A0 执行的操作 • 0 0 1 00 读A端口(A端口数据→数据总线) • 0 1 0 00 写A端口(A端口←数据总线数据) • 0 0 1 01 读B端口(B端口数据→数据总线) • 0 1 0 01 写B端口(B端口←数据总线数据) • 0 0 1 10 读C端口(C端口数据→数据总线) • 0 1 0 10 写C端口(C端口←数据总线数据) • 0 1 0 11 当D7=l时,对8255A写入控制字 • 当D7=O时,对C端口置位/复位 • 0 0 1 11 非法的信号组合 • 0 1 1 ** 数据线D7~D0进入高阻状态 • 1 * * ** 未选择
6.2.3 8255A引脚信号定义 • 8255A是40条引脚双列直插式芯片。引脚按连接功能分为2组。 • 1.与CPU相连的引脚 • RESET:复位信号,高电平有效。复位后把8255A内部的所有寄存器都清“0”,并将三个数据端口自动设置为输入端口。 • CS:片选信号,低电平有效。只有当芯片被选中才能进行读、写操作。 • RD:读信号,低电平有效。 • WR:写信号,低电乎有效。 • A1A0:端口译码信号。00选中A端口;01选中B端口; • 10选中C端口;11选中控制端口。 • D7~D0:双向8位三态数据线,与系统的数据总线相连接。 • 2.和外设端相连的引脚 • PA7~PA0:A端口的输入/输出引脚; • PB7~PB0:B端口的输入/输出引脚; • PC7~PC0:C端口的输入/输出引脚;
6.2.4 8255A的控制字 • 8255A的控制字:方式选择控制字和端口C置1/置0控制宇 • 1.1.方式选择控制字 • 方式选择控制字 • 标识位总为 1 D7 D6 D5 D4 D3 D2 D1 D0 0 0:方式0 0 1:方式1 1﹡:方式2 PA口 1:输入 0:输出 PC7~PC4 1:输入 0:输出 0:方式0 1:方式1 PB口 1:输入 0:输出 PC3~PC0 1:输入 0:输出 A 组 控 制 B 组 控 制
1 0 0 1 0 1 0 0 控制字 为94H • 如果要求8255A的A端口作输入,B端口和C端口作输出,A组工作在方式0,B组工作在方式l。 • 94H • 标志位 • A方式0 B方式1 • A口输入 B口输出 • C口输出 C口输出 • 相应的程序段: • MOV AL,94H ;方式选择控制字送AL。 • MOV DX,Portctr ;控制口地址Portctr送DX • OUT DX,AL ;方式选择控制字输出给8255入的 • ;控制端口,完成方式选择 Portctr为控制口的地址
2.端口C置1/置0控制字 • 8255A在和CPU传输数据的过程中,经常将C端口的某几位作为控制位或状态位来使用,配合A端口或B端口的工作。 • 初始化时,C端口置l/置0控制字可以单独设置到C端口的某一位为0或某一位为1,控制字的D7位为“0”是C端口置l/置0控制字中的标识位。 • D6~D4位可为任意值,不影响操作。D3~D1位用来决定对C端口8位中的哪一位进行操作。Do位用来决定对所选择的位是置l还是置0。 • C端口位选择 • C端口置位000:PC0 001:PC1置1/置0选择 • 标识位010:PC2 011:PC3 0:置0 • 总为 0 100:PC4 101:PC5 1:置1 • 110:PC6 111:PC7 D7 D6 D5 D4 D3 D2 D1 D0 任意值 一般为0
0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 • 例如:要将C端口的PC3置0,PC7置l,可用下列程序段实现。 • 06H 0FH • MOV AL,06H ;PC3置0控制字送AL • MOX DX,PortCtr ; 控制口地址 PortCtr送DX • OUT DX,AL ;对PC3 完成置0操作 • MOV AL,0FH ;PC7置1控制字送AL • OUT DX,AL ;对PC7完成置1操作 置0 置1 PC3 PC7
6.2.5 8255A的工作方式 • 8255A有3种工作方式:方式0,方式l和方式2。 • A端口:3种方式中的任一种; • B端口:方式0和方式1; • C瑞口:通常作为控制信号使用,配合A端口和B端口的工作。 • 1.方式0:基本的输入输出方式 • 方式0的基本定义如下:2个8位的端口和2个4位的端口。都可以作为输入或输出。输出可以被锁存。输入不能锁存。
输入时序对各信号的要求是: • ①地址信号要领先于RD信号。RD信号有效到数据稳定的最长时间为250ns ; • ②读信号有效到数据稳定的时间内,应由输入设备解决数据锁存问题。 方式0输入时序 tRR RD tIR tHR 输入数据 数据有效 tRA CS、A1、A0 tAR D7~D0 数据有效 tRD tDF
输出时序对各信号的要求是: • ①地址信号必须在写信号WR之前有效,且维持到WR撤消后的20ns以后。 • ②写脉冲WR的宽度最小要求是400ns。 • ③数据必须在写信号之前100ns时间出现在数据总线上;写信号撤消后,数据的最小保持时间是30ns。 tWW WR D7~D0 数据有效 CS、A1、A0 输出数据 数据有效 方式0输出时序
2.方式1:选通的输入/输出方式 • 在这种方式下,当A端口和B端口进行输入输出时,必须利用C端口提供的选通和应答信号。 • 方式1的基本定义如下:分成2组(A组和B组)。每组包含一个8位的数据端口和1个4位的控制/数据端口。 • 8位的数据端口既可以作为输入也可以作输出,输入和输出都可以被锁存。 • 4位的控制/数据端口用于传送8位数据端口的控制和状态信息。 • (1)选通的输入方式 • 选通输入方式:规定是PC3~PC5分配给A端口,PC0~PC2分配给B端口。C端口剩下的2位PC6,PC7可’作为简单的输入/输出线使用,控制字的D3位为l时输入;D3位为0时输出。
1 0 1 1 1/0 × × × 1 × × × × 1 1 × • A组工作于方式1输入的控制字 B组工作于方式1输入的控制字 PC7、PC6 方式1 方式1 1输入,0输出 端口B输入 端口A输入 8 PB7~PB0 8 PA7~PA0 INTE A INTE B PC4 STBA PC2 STBB PC5 PC1 IBFA IBFB PC3 INTRA PC0 INTRB PC6、PC7 RD RD I/O 方式1输入时C端口对A、B端口的控制
方式1选通输入时序 STB ① ② ④ • ①外设数据送到 • 数据线上时,发出 • 选通输入信号STB • (≥500ns)锁存 • 数据到输入寄存器。 • STB信号变低后 • (≤300ns)使 • 输入缓冲器满信号 • IBF变为高电平。 • ②STB结束后,最 • 多经过300ns时间向CPU发出中断请求信号(INTR变高)。 • ③CPU响应中断后发出读信号RD,将数据读入到CPU中,读信号有效(低电平)后,最多经过400ns时间就清除中断请求,使中断请求信号变低。 • ④当读信号结束后,才使输入缓冲器满信号IBF变低,通知外设可以输入新的数据。 IBF INTR ③ RD 从外设来的 输入数据
方式l选通输入方式时,各控制信号的意义如下:方式l选通输入方式时,各控制信号的意义如下: • STB:选通输入信号,低电平有效。A组方式控制字中对应 • PC4 ;B组方式控制字中对应PC2。宽度最小是500ns。 • IBF:输入缓冲器满信号,高电平有效。A组方式控制字中对应PC5;B组方式控制字中对应PC1。STB变低后300ns时间内变有效的高电平。在RD信号撤消后的300ns时间内IBF信号才撤消。保证数据传输的可靠性。 • INTR:中断请求信号,高电平有效,A组方式控制字中对应PC3;B组方式控制字中对应PC0。STB信号撤销后最多300ns时间内,IBF信号变为高电平有效。 • INTE:中断允许信号、高电平有效。INTE的状态是用软件通过由C端口置1/置0控制字来控制的。
(2)选通的输出方式 • 方式1在选通输出情况下对应的控制信号: • PC3,PC6,PC7分配给A端口;PC2,PC1,PC 0分配给B端口。PC4,PC5可作为简单的输入/输出线使用,当控制字的D3位为1时PC4,PC5作输入;当控制字的D3位为0时PC4,PC5作输出。 1 0 1 0 1/0 × × × 1 × × × × 1 0 × 方式1 端口B输出 方式1 端口A输出 PA7~PA0 PB7~PB0 INTEA INTEB PC6 ACKA PC2 ACKB PC7 OBFA PC1 OBFB PC3 INTRA PC0 INTRB WR PC4~PC5 WR