微机原理实验指导书
路径下。
3.在Windows98下打开MS-DOS,使用cd命令到BIN 路径下,输入下面命令后回车。 4.编译:tasm /zi 8251COM.asm (注:“.ASM”可省略) 5.连接:tlink /v/3 8251COM.OBJ (注:“.OBJ”可省略) 6.运行:8251COM.EXE (注:“.EXE”可省略) 运行结果如下图所示:
按PC键盘输入字符,8251收到字符后显示在第二行,若通信出错则在第三行显示出错信息。按PC‘Q’键退出程序。
实验七 8255 扫描键盘实验
一、实验目的
1.进一步学习8255 的使用方法;
2.学习扫描读取键盘的编程方法及硬件结构。 二、实验要求
编写程序,用8255可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255控制的七段数码管上。8255PB口做键盘输入线,PC口做显示扫描线,PA口做显示数据线。 三、实验原理
一 、8255A的主要性能和内部结构
8255A是为Intel公司的80系列微机配套的通用可编程并行接口芯片,具有三个可编程的端口(A端口、B端口和C端口),每个端口8条线,共有24条I/O引脚,也可分为2组工作,每组12条线,并有三种工作方式。
可编程是指可通过软件设置芯片的工作方式,因此这个芯片在与外部设备相连接时,通常不需要附加太多的外部逻辑电路,这给用户的使用带来很大方便。
31
微机原理实验指导书
8255A的内部结构框图如图10.7(a)所示,图10.7(b)为8255A的外引脚图。从图中可以看到,8255A主要由4部分组成。
RDWR读写控制逻辑B组控制端口B(8)DB数 据总 线缓冲器8位内部数据总线端口C下半部(4)端口C上半部(4)A组控制端口A(8)CPU接口内部逻辑外部接口PA~PA70 A0 A1RESET
PA3PA2PA1PA0RDPCCS7~PC4GNDA0A1PC7PC~PCPC306PC5PC4PC0PC1PCPB~PB270PC3PB0PB1PB214023933843753663573483393210318255A1130122913281427152616251724182319222021PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB3CS(a)(b)图(1) 8255内部结构和引脚图(a) 8255A内部结构;(b) 8255A外引脚图
1. 三个独立的数据口
8255A的三个数据口分别是A端口、B端口、C端口,它们彼此独立,都是8位的数据口,用来完成和外设之间的信息交换。三个口在使用上有所不同。
1) A端口
A端口对应一个8位的数据输入锁存器和一个8位的数据输出锁存器和缓冲器。因此A端口适合用在双向的数据传输场合,用A端口传送数据,不管是输入还是输出,都可以锁存。
2) B端口和C端口 这两个口分别是由一个8位的数据输入缓冲器和一个8位的数据输出锁存器和缓冲器组成。因此用B端口和C端口传送数据作输出端口时,数据信息可以实现锁存功能;而用作输入口时,则不能对数据实现锁存,这一点在使用中要注意。在实际应用中,A端口和B端口通常作为独立的输入口和输出口,而C端口常用来配合A端口和B端口的工作使用。C端口分成两个4位的端口,这两个4位的端口分别作为A端口和B端口的控制信号和输入状态信号使用。
2. A组控制电路和B组控制电路
控制电路分成A组控制和B组控制两组,A组控制电路控制A端口和C端口的高4
32
微机原理实验指导书
位(PC4~PC7)。B组控制电路控制B端口和C端口的低4位(PC0~PC3)。这两组控制电路的作用是:由它们内部的控制寄存器接收CPU输出的方式控制命令字,还接收来自读/写控制逻辑电路的读/写命令,根据控制命令决定A组和B组的工作方式和读/写操作。
表(1) 8255A的控制信号与执行的操作之间的对应关系
CS0 0 0 0 0 0 0 0 0 0 1
RD0 1 0 1 0 1 1 1 0 1 x
WR1 0 1 0 1 0 0 0 1 1 x
A1A0
执行的操作
0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 x x x x
读A端口(A端口数据→数据总线) 写A端口(A端口←数据总线数据) 读B端口(B端口数据→数据总线) 写B端口(B端口←数据总线数据) 读C端口(C端口数据→数据总线) 写C端口(C端口←数据总线数据) 当D7=1时,对8255A写入控制字 当D7=0时,对C端口置位/复位 非法的信号组合
数据线D7~D0进入高阻状态 未选择
3. 读写控制逻辑电路
这部分电路是用来完成对8255A内部三个数据口的译码工作,由CPU的地址总线A1、A0和8255A的片选信号CS和WR、RD信号组合后产生控制命令,并将产生的控制命令传送给A组和B组的控制电路,从而完成对数据信息的传输控制。8255A的控制信号与执行的操作之间的对应关系如表10-1所示。
4. 数据总线缓冲器 这是一个双向、三态的8位数据总线缓冲器,是8255A和系统总线相连接的通道,用来传送输入/输出的数据、CPU发出的控制字以及外设的状态信息。总之,8255A与CPU之间的所有信息传输都要经过数据总线缓冲器。 二、 8255A的外部特性
8255A是40条引脚的双列直插式芯片,引脚排列如图10.7(b)所示。单一的+5 V电源,使用时要注意它的+5V电源引脚是第26脚,地线引脚是第7脚,它不像大多数TTL芯片电源和地线在右上角和左下角的位置,除了电源和地线之外,其他引脚的信号按连接的功能可分为两大组。
1. 与CPU相连的引脚
RESET(35PIN):芯片的复位信号,高电平时有效。复位后把8255A内部的所有寄存器都清0,并将三个数据口自动设置为输入口。
CS(6PIN):片选信号,低电平时有效。只有当CS=0时,芯片被选中,才能对8255A进行读、写操作。
33
微机原理实验指导书
RD(5PIN):读信号,低电平有效。只有当CS=0,RD=0,才允许从8255A的三个端口中读取数据。
WR(36PIN):写信号,低电平有效。只有当CS=0,WR=0,才允许从8255A的三个端口写入数据或者是写入控制字。
A1、A0(8,9PIN):端口译码信号。用来选择8255A内部的三个数据端口和一个控制端口的地址。其中对控制口只能进行写操作。
(1) 当A1A0=00时,选中A端口。 (2) 当A1A0=01时,选中B端口。 (3) 当A1A0=10时,选中C端口。 (4) 当A1A0=11时,选中控制端口。
A1、A0与读、写信号组合对各端口所执行的操作如表10-1所示。
D7~D0(27~34PIN):双向三态8位数据线,与系统的数据总线相连接。 8255A的数据线为8条,这样8位的接口芯片在与8086外部数据线为16条的CPU相连接时,应考虑接口芯片本身对地址的要求。由于在8086这样的16位外部总线系统中,CPU在进行数据传输时,低8位对应一个偶地址,高8位对应一个奇地址。如果将8255A的数据线D7~D0与8086CPU的数据总线的低8位相连的话,从CPU这边看来,要求8255A的4个端口地址都应为偶地址,这样才能保证对8255A的端口的读/写能在一个总线周期内完成,但又要满足8255A本身对4个端口规定的地址要求是00,01,10,11。因此将8255A的A1和A0分别与8086系统总线的A2和A1相连,而将最低位A0总设置为0。
2. 和外设端相连的引脚
PA7~PA0(37~40 PIN,l~4PIN):A端口的输入/输出引脚 PB7~PB0(25~18 PIN):B端口的输入/输出引脚
PC7~PC0(10~13,17~14 PIN):C端口的输入/输出引脚 三、 8255A的控制字和编程
由CPU执行输出指令,向8255A的端口输出不同的控制字来决定它的工作方式。控制字分为两种,分别称为方式选择控制字和端口C置1/置0控制字。根据控制寄存器的D7位的状态决定是哪一种控制字。 1. 方式选择控制字
方式选择控制字用来决定8255A三个数据端口各自的工作方式,它的格式如图所示。它由一个8位的寄存器组成。
D7 D6D5D4D3D2D1D0方式选择控制 1字识别位,为 选中 00:方式 001:方式 11x:方式 2A端口1:输入0:输出A组控制PC~PC4B组方式71:输入0:方式00:输出1:方式1B端口1:输入0:输出B组控制PC~PC031:输入0:输出图(2) 8255A的方式选择控制字
(1)D7位为“1”时,为方式选择控制字的标识位。
34
微机原理实验指导书
(2)D6、D5位决定A端口的工作方式,D6D5位为00、01、1x时分别表示A端口工作在方式0、方式1和方式2下。
(3)D4位决定A端口工作在输入还是输出方式。D4位为0时,A端口工作在输出方式;(4)D4位为1时,A端口工作在输入方式。 (5)D3位决定用于A端口的C端口高4位PC7~PC4是作为输入端口,还是作为输出端口。D3位为0时,PC7~PC4作输出;D3位为1时,PC7~PC4作输入。 (6)D2位用来选择B端口的工作方式。D2位为0时,B端口工作在方式0,D2位为1时,B端口工作在方式1。 (7)D1位决定B端口作为输入还是输出端口。D1位为1时B端口工作在输入方式;D1位为0时B端口工作在输出方式。
(8) D0位决定用于B端口的C端口低4位PC3~PC0作为输入,还是输出。D0位为0时,PC3~PC0作输出;D0位为1时,PC3~PC0作输入。
2. C端口置1/置0控制字
8255A在和CPU传输数据的过程中,经常将C端口的某几位作为控制位或状态位来使用,从而配合A端口或B端口的工作。为了方便用户,在8255A芯片初始化时,C端口置1/置0控制字可以单独设置C端口的某一位为0或某一位为1。控制字的D7位为“0”时,是C端口置1/置0控制字中的标识位,具体的格式如图(3)所示。
D7 C端口置位识别位,为 0有效
D6D5任意值D4D3D2D1D0C口位选择选中位置1/置0选择000 : PC100 : PC0 : 置004001 : PC101 : PC1 : 置115010 : PC110 : PC26011 : PC111 : PC37图(3) 8255A的C端口置1/置0控制字
10.2.4 8255A的工作方式
8255A有三种工作方式,分别称为方式0,方式1和方式2。其中A端口可以工作在三种方式中的任一种;B端口只能工作在方式0和方式1;C端口通常作为控制信号使用,配合A端口和B端口的工作。 1. 方式0:基本的输入/输出方式
方式0之所以被称为基本的输入/输出方式,是因为在这种方式下,A端口、B端口和C端口(C端口分为2个4位使用)都可提供简单的输入和输出操作,对每个端口不需要固定的应答式联络信号。工作在方式0时,在程序中可直接使用输入指令(IN)和输出(OUT)指令对各端口进行读写。 2. 方式1:选通输入/输出方式 在这种方式下,当A端口和B端口进行输入输出时,必须利用C端口提供的选通和应答信号,而且这些信号与C端口中的某些位之间有着固定的对应关系,这种关系是硬件本身决定的不是软件可以改变的。由于工作在方式l时,要由C端口中的固定位来作为选通和应答等控制信号,因此称方式1为选通的输入/输出方式。
35