可编程并行接口知识点总结.docx
- 文档编号:15570581
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:15
- 大小:555.13KB
可编程并行接口知识点总结.docx
《可编程并行接口知识点总结.docx》由会员分享,可在线阅读,更多相关《可编程并行接口知识点总结.docx(15页珍藏版)》请在冰点文库上搜索。
可编程并行接口知识点总结
可编程并行接口8255知识点总结
8255A是INTEL系列的并行接口芯片,由于它是一种可编程的外部接口部件,通常作为微机系统总线与外部设备的接口控制部件,可通过软件来设置芯片的工作方式,用8255A连接外部设备时,通常不需要附加外部电路,给使用带来很大的方便。
1、内部结构
2、引脚说明
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
(1)与CPU连接部分
根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0、A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:
总线分类:
名称
引脚
作用
数据总线DB
D0-D7
与CPU传送8位数据
地址总线AB
A0、A1
选择A、B、C与控制寄存器
控制总线CB
片选
、复位RST、读、写
CPU读写操作前必须发出片选信号选中8255
(2)与外设接口部分
8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。
数据端口A、B、C
端口A(PA0-PA7):
对应了1个8位的数据输入锁存器和1个数据输出锁存/缓冲器。
所以A作为输入或输出时,数据均受到锁存。
端口B(PB0-PB7):
对应了1个8位的数据输入缓冲器和1个数据输出锁存器/缓冲器。
所以B输入锁存,输出不受到锁存。
端口C(PC0-PB7):
对应1个8位数据缓冲器和1个数据输出锁存/缓冲器,所以C输入不锁村,输出锁存。
当8255工作于应答I/O方式时,C口用于应答信号的通信。
锁存分类:
端口
A
B
C
输入锁存
Y
Y
N
输出锁存
Y
N
Y
A、B组的逻辑控制功能
A组:
组成:
端口A(PA0-PA7)和端口C的高4位(PC4-PC7)
这几个端口由A组统一进行逻辑控制。
B组:
组成:
端口B(PB0-PB7)和端口C的低4位(PC0-PC3)
(3)A、B组分配:
A组由端口A作为与外设交换数据的输入/输出接口,C口的高4位作为外设连接的控制信号线和状态信号线,以配合A口工作。
B组的工作原理和A组的相同,C的低4位作为外设连接的控制信号线和状态信号线。
(4)数据总线缓冲器
8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线(D0-D7)相连,可以传送输入/输出数据、CPU发给8255的控制字。
(5)读/写控制逻辑电路
读/写控制逻辑电路负责管理8255的数据传输过程。
它接收片选
及来自系统地址总线A1,A0(8086系统中为A2,A1)和控制总线的输入信号RESET,
,
,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。
(6)端口A、B、C的选择
A0、A1
端口
地址线
00
A
PA0-PA7
01
B
……
10
C
……
11
对控制端口写控制字
3、8255的控制字
8255A可通过指令在控制端口中设置控制字来决定它的工作。
其控制字可分为两类(个),都写入控制字存储器(状态为A1A0=11)
(1)方式选择控制字
8255有3种工作方式:
方式0:
基本输入输出方式(A、B、C口)
方式1:
选通输入输出方式(A、B口)
方式2:
双向总线I/O传输方式(仅A口)
端口C既可以分为两个4位端口,作一般的输入/输出端口使用,更经常的是用于配合端口A和B工作,为它们提供控制信号和状态信号。
为了方便用户单独设置某一个控制位或状态位,8255A提供了端口C置位/复位控制字。
(2)端口C按位置1/置0控制字
可以使端口C中的任何一位进行置位
(1)或复位(0)。
4、工作方式分析
(1)工作方式0:
基本的输入/输出方式。
方式-0不使用联络信号,A口、B口、上C口、下C口都可以独立设置作为输入或输出使用。
适合用于无条件或查询式传送,所有输出都有锁存,输入只有缓冲不能锁存,C可以将个口清零或置1。
四个端口的输入或输出,可以有16种不同的组合,故可以适用于多种用途。
各端口输入时无锁存,输出时有锁存。
(2)工作方式1:
选通输入/输出方式。
A口、B口可以分别作为数据口工作在方式1。
在C口的配合下,需要使用C口中特定的引脚作为选通和应答使用。
C口中其余的引脚仍可工作在方式0,定义为输入或输出,适合用于中断式传送和程序查询方式I/O传送。
C口中特定的引脚作为选通和应答使用时,视A口(或B口)为输入还是输出的不同,有两个引脚的含义有所不同。
A、B的输入和输出都带有锁存。
(3)工作方式2:
双向传送方式。
工作方式1:
A口选通输入方式:
当外设数据准备好以后,发出一个负脉冲选通信号
,使A口打开输入锁存器接收数据。
A口接收到数据以后,发出IBFA。
数据写完后,
撤销即变为无效。
和IBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,希望CPU接收数据。
CPU读数据的RD信号的下降沿使INTRA和IBFA恢复低电平。
另外,只可以通过对PC4的置位和复位来设置INTEA。
B口作为选通输入接口时道理是一样的,只不过是这些信号使用的是C口的PC2,PC1和PC0
在方式1输入下,可以使用中断和查询两种方式让CPU读数据,以A口为例:
(1)使用TEXT方式对IBF(输入缓冲器)判断是否有数据可读,如果IBF为高则表示有数据可读,就用IN(中断)读取。
大体步骤:
AG:
INAL,C口
TESTAL,00100000B判断IBF所在的D5
JZAG如果没有数据即IBF为低则继续读取判断
INAL,A口如已经有数据则读A口数据
此时的引脚作用分析:
STB:
选通信号,输入,LO有效。
这是因为外设送的信号,有效时将其位于A(B)口的引线的8位数据锁存到它的输入锁存器中。
IBF:
输入缓冲器满,输出,HI有效。
是送给外设的联络信号,表示数据已经送入输入锁存器中。
信号由STB置位,由RD信号的上升沿复位。
INTR:
中断请求,输出,HI有效。
在中断允许的前提下,输入选通信号结束时,外设已经将数据送入输入锁存器,此事CPU被中断请求来读取位于输入锁存器中的数据。
INTE:
中断允许。
INTE=1,允许向CPU申请中断,INTE=0则禁止。
不能由外部控制,由C的按位复位/置位功能实现。
INTEA由PC4控制,INTEB由PC2控制。
输入时序图:
方式1的输出
A口:
C此时的PC7用于输出缓冲器满
信号,PC6为外设收到数据的响应信号
,PC3中断请求输出信号线INTRA。
B口:
C此时的PC1用于输出缓冲器满
信号,PC2为外设收到数据的响应信号
,PC0中断请求输出信号线INTRA。
:
输出缓冲器满,输出,LO有效。
送给外设的控制信号,有效表示数据已经送入输出锁存器中,用这个信号通知外设设备将输出锁存器中的数据取走。
此信号由CPU的信号编程低电平,由外设发出的ACK恢复为高电平。
:
应答,输入,LO有效。
由外设送入有效时表示外设已经从端口输出线上将数据取走。
输出时序图:
工作方式2:
是A组独有的工作方式,外设在A口可以收发数据,借用C口的五条信号线作控制和状态线,A的输入输出都带锁存。
INTE1值为-0还是1是由软件对PC6的置位和复位来完成的。
INTE2值为0还是1是由软件对PC4的置位和复位来完成的
方式2时序图:
5、应用举例
例一:
电路如图示。
由8个LED实时显示8个开关的状态,开关断开,相应的LED亮,开关闭合,相应的LED熄灭。
A口输入,8个开关K7~K0分别接PA7~PA0。
B口输出,8个LED7~LED0分别接PB7~PB0
各端口地址:
A0
A1
A2
A3
A4
A5
A6
A7
功能
0
0
0
0
1
1
1
1
0F0H
端口A
0
1
0
0
1
1
1
1
0F2H
端口B
0
0
1
0
1
1
1
1
0F4H
端口C
0
1
1
0
1
1
1
1
0F6H
控制口
端口控制字
因为A,B同时工作在模式0的状态,A口输入,B口输出。
1
0
0
1
1
0
0
0
相关程序如下:
CCODESEGMENT
ASSUMECS:
CCODE
START:
MOVDX,0F6H
MOVAL,98H
OUTDX,AL
TEST_IT:
MOVDX,0F0H
INAL,DX
MOVDX,0F2H
OUTDX,AL
JMPTEST_IT
CCODEENDS
ENDSTART
例二:
8255的初始化编程
1、A、B、C口均为基本I/O输出方式。
2、A口与上C口为基本I/O输出方式。
3、B口与下C口为基本I/O输入方式。
4、A口为应答I/O输入方式,B口为应答I/O输出方式。
解:
1、MOVDPTR,#0E003HDPRT指向8255控制口地址E003H
MOVA,#10000000B=#80H设置A、B、C口均为基本I/O输出方式
MOVX@DPRT,A工作方式选择字送入8255控制寄存器
2、MOVDPTR,#0E003H
MOVA,#10000011B=#83H设置A与上C口为基本I/O输出方式
B口与下C口为基本I/O输入方式
MOVX@DPRT,A工作方式选择字送入8255控制寄存器
3、MOVDPTR,#0E003H
MOVA,#10110100B=#B4H设置A口应答输入,B口应答输出方式
MOVX@DPRT,A工作方式选择字送入8255控制寄存器
例三:
用8255C口的PC3引脚向外输出连续的正脉冲信号,频率=1000Hz。
解:
F=1000HZ,T=1ms,0.5T=0.5ms
将C口设置为基本I/O输出方式
先从PC3引脚输出高电平1,间隔0.5ms后向PC3输出低电平0,再间隔0.5ms后向PC3输出高电平1,周而复始。
则可实现从PC3输出频率为1000HZ的正脉冲的目的。
程序如下:
MOVA,#80H设置A、B、C为基本I/O输出方式
MOVDPTR,#0E003H
MOVX@DPTR,A
LOOP:
MOVA,#07HC口置位控制字=00000111B=07H
MOVX@DPTR,APC3引脚输出高电平
LCALLDELAY0.5延时0.5ms
MOVA,#06H复位控制字=00000110B=06H
MOVX@DPTR,APC3引脚输出低电平
LCALLDELAY0.5延时0.5ms
SJMPLOOP继续循环
例四:
从8255B口输入8位数据,然后从8255A口输出。
解:
设置8255A口为基本I/O输出方式,8255B口为基本I/O输入方式。
先从8255B口输入8位数据到累加器A,然后将累加器中的8位数据输出到8255A口,重复上述过程。
MOVDPTR,#0E003H8255控制口地址E003H送DPTR
MOVA,#82HA口:
基本I/O输出,B口:
基本I/O输入
MOVX@DPTR,A
LOOP:
MOVDPTR,#0E001H8255B口地址E001H送DPTR
MOVXA,@DPTR从B口输入数据
MOVDPTR,#0E00H8255A口地址E000H送DPTR
MOVX@DPTR,A从A口输出数据
SJMPLOOP
例五:
编写交通灯控制程序。
用8255A口的PA7、PA6、PA5控制南北方向的红、黄、绿灯,用8255A口的PA0、PA1、PA2控制东西方向的红、黄、绿灯,如图所示。
控制方式为:
东西方向通行30秒后,黄灯亮1秒,再南北方向通行30秒后,黄灯亮1秒,按上述方式不断循环。
解:
(1)分析:
开始时,假设东西方向先通行,即东西方向为绿灯(PA2=1),南北方向为红灯(PA7=1)。
显然,送入8255A口的控制码为10000100=84H。
30秒延时后黄灯亮,黄灯亮的控制码为42H。
延时1秒后,南北方向通行,南北方向通行的控制码为21H。
然后延时30秒依次循环。
具体工作过程如下:
南北
红
黄
绿
东西控制灯
绿
黄
红
控制码
8255A
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
东西通
1
0
0
0
0
1
0
0
=84H
延迟30s
黄灯亮
0
1
0
0
0
0
1
0
=42H
延时1s
南北通
0
0
1
0
0
0
0
1
=21H
延时30s
黄灯亮
0
1
0
0
0
0
1
0
=42H
延时1s
转东西通
由上述分析可知,只要将8255A口设置成基本I/O输出方式,然后将交通灯的控制码依次输出到A口,并作30秒或1秒的延时,则可编写出如下的交通灯控制程序。
程序如下“”
延时1秒与30秒子程序由读者自行编写。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 并行 接口 知识点 总结