一、 并行接口
什么叫并行接口?
连接CPU与并行外设的通道
以字节、双字节或字长为传输单位。
为什么要用?或者说,为什么会广泛应用?
传输速度快,但硬件开销大,近距离传输
一般传输什么信息?
传输的信息主要有状态信息、控制信息和数据信息,所以有对应的寄存器
在端口是不够用的时候,得进行扩展
二、可编程并行接口的功能
- 有什么特点?
- 具有端口寄存器
- 具有与CPU和外设进行联络的能力
- 能够以中断的方式与CPU进行联络
- 可以有多种工作方式,且可编程进行选择
三、输入数据的过程
- 需要的信号
- 输入数据准备好信号(外设->接口)
- 输入数据(外设->接口)
- 输入应答信号(接口->信号)
- 流程
- 在“输入数据准备好”有效时,外设将数据送给接口的输入缓冲寄存器
- 同时,接口将“输入应答”信号置成有效,外设收到“应答信号”后,撤消“输入数据准备好”信号
- 状态寄存器(在接口内)将准备好输入位置为有效,向CPU申请中断或CPU以软件方式查询,实现将数据的输入。
- 当完成输入数据之后,将准备好输入位置为无效,准备接收下一个数据。
四、输出数据的过程
- 需要信号
- 输出数据准备好信号(接口->外设)
- 输出数据(接口->外设)
- 输出应答(外设->接口)
- 流程
- 当外设从接口接收到一个数据后,接口的输出缓冲寄存器为空,使“输出数据准备好”信号有效,这个信号可以向CPU申请中断或CPU以软件方式查询此信号,实现将数据的输出到接口的输出缓冲寄存器中。
- 此时接口向外设发送一个启动信号,外设从接口接收到数据后,向接口回送一个“输出应答”信号。
- 接口接收到这个信号后,重新开始准备接收来自CPU数据,重复新的一个过程。
一、 8255A 的主要性能
- 三个可编程的控制接口,都是8位
- 输入、输出电平
- 时序
- 可以直接置位,便于实现控制
- 单一的**+5v电源**
二、引脚功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DhvAKIF-1587459739084)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-47-43.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTbqWGBS-1587459739086)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-50-24.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BNW4Ysq6-1587459739087)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-47-43.png)]
- A口:8位数据双向口,输入与输出均有锁存,输出还有缓冲
- B口:8位数据双向口,输入无锁存,但有缓冲,输出具有锁存与缓冲
- C口:8位数据双向口,输入无锁存,但有缓冲,输出具有锁存与缓冲
- A组B组控制电路
- 读写控制逻辑电路
- 数据总线缓冲器:输入数据、输出数据、CPU 发送给 8255A 的控制字以及从 8255A 读出的状态信息都通过该缓冲器传送
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMzO7did-1587459739089)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-52-36.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzNxfaXE-1587459739090)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-56-37.png)]
1 ----- A组工作方式 ----- A口输入输入选择----- C口高位输出输入选择位----- B口输入输出方式选择----- B口工作方式选择----- C口低位输入输出选择
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VyXXBVbI-1587459739092)(F:\my study\微机原理\pic\Snipaste_2020-04-20_21-56-52.png)]
方式0:基本输入/输出方式(Basic Input/Output)
方式1:选通输入/输出方式(Strobed Input/Output)
方式2:选通的双向输入/输出方式(Strobed bi-directional Input/Output)一、8255A—工作方式 0
- 端口A、B和C相互独立工作,
端口C的高4位和低4位也分为两个独立的部分
四部分任意选择为输入或输出端口,共有16种组合- 端口A、B的8位同时工作,而端口C则比较灵活
- 支持无条件、程序查询方式
- 方式0输入数据不能锁存,输出可锁存
二、8255A—工作方式1
A组:端口A、PC7 ~ PC3(5)
B组:端口B、PC2 ~ PC0 (3)
C作为联络信号A组和B组可以输入也可以输出,但是单向的
支持程序查询、I/O中断方式
输入:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FlLAC1t6-1587459739093)(F:\my study\微机原理\pic\Snipaste_2020-04-20_23-49-20.png)]
时序图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AHSaJDu-1587459739094)(F:\my study\微机原理\pic\Snipaste_2020-04-20_23-58-57.png)]
输出:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NsMx0DOH-1587459739094)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-00-50.png)]
时序图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ss1IOUWy-1587459739095)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-03-30.png)]
三、8255A—工作方式2
只有A组可以工作在该方式
B组不能工作在该方式可以输入也可以输出,是双向的
所以5个联络信号都使用支持程序查询、I/O中断方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJSYaO62-1587459739096)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-10-26.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-adBADRyL-1587459739096)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-12-14.png)]
8255的端口地址
8255A的端口地址如何确定?
在8位机中:
可以将8255A看成 1片存储器:
总线低位地址接芯片,高位地址形成片选
译码方案可以有多种
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0M6ryy9K-1587459739098)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-26-08.png)]
**在16位机中:**末位为0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a8DlPZ3L-1587459739099)(F:\my study\微机原理\pic\Snipaste_2020-04-21_00-27-25.png)]
PA PB PC 控制端口
00B0H、00B2H、00B4H、00B6H
MOV AL,0A0H ;方式控制字,A组为方式1、输出
1 01 0 0 0 0 0
OUT 0B6H,AL ;PC4、PC5和PC2 ~ PC0为输出
MOV AL,0DH ;写入置位/复位控制字 1101
OUT 0B6H,AL ;PC6置1,使INTEA = 1
可以产生中断请求
MOV AL,09H ;写入置位/复位控制字 1001
OUT 0B6H,AL ;PC4置1
MOV AL,04H ;写入置位/复位控制字 0100
OUT 0B6H,AL ;PC2清0
有共阳极和共阴极之分
下面是 动态显示接法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asKSNTfv-1587459739099)(F:\my study\微机原理\pic\Snipaste_2020-04-21_01-45-55.png)]
PORTA EQU 0FFF0H ;8255A各端口地址
PORTB EQU 0FFF2H
PORTC EQU 0FFF4H
PORTCTL EQU 0FFF6H
BUFFER EQU THIS BYTE
DWORD DD ? ;显示缓冲区
MOV AL,10000000B ;工作方式
MOV DX,PORTCTL
OUT DX,AL
BEGIN:MOV CX,8 ;循环8次
MOV DI,OFFSET BUFFER
MOV BX,OFFSET SEGCODE
MOV AH,0000 0001B
SCAN:MOV AL,AH
MOV DX,PORTCTL ;置位 PC0置一
OUT DX,AL
MOV AL,[ DI ] ;取出要显示的数字
INC DI
XLAT SEGCODE ;查表,获得字
MOV DX,PORTA;PA口输出字型码
OUT DX,AL
CALL DELAY2MS
MOV AL,AH ;复位PCi
AND AL,11111110B
MOV DX,PORTCTL
OUT DX,AL
ADD AH,2 ;显示下一个数码
LOOP SCAN
JMP BEGIN ;重复显示
‘0’ ‘1’ ‘2’ ‘3’ ‘4’
SEGCODE: DB 0FCH,60H,0DAH,0F2H,66H
DB 0B6H,0BEH,0E0H,0FEH,0F6h
‘5’ ‘6’ ‘7’ ‘8’ ‘9’
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-civ0fShg-1587459739100)(F:\my study\微机原理\pic\Snipaste_2020-04-21_01-51-06.png)]
MOV AL,10100010B ;A组、方式1、输出
MOV DX,PORTCTL
OUT DX,AL
PRINT PROC NEAR
PUSH AX ;保存现场
PUSH DX
MOV AL,[ BX ] ;取出输出数据
INC BX
MOV DX,PORTA ;由PA口输出
OUT DX,AL
POP DX ;恢复现场
POP AX
IRET
PRINT ENDP