端口的输入与输出

描述

2.1 硬件原理图

led

8086的输入输出控制是通过8255芯片控制的,用LED代表输出的数据,按键代表输入的数据,八个LED接在8255的PA端口上,八个按键接在PB端口上,通过8086控制8255A进行数字量的输入与输出。

2.2 8255A简介

2.2.1 引脚图

led

(1)片选信号CS:低电平有效,用于多片8255A连接时控制某一片8255;

(2)复位信号RESET:高电平有效,用于将8255A复位;

(3)读数据信号RD:低电平有效,用于控制芯片进入读取模式;

(4)写数据信号WR:低电平有效,用于控制芯片进入写入模式;

(5)两个地址信号A0和A1:高电平有效,用于控制8255A内部的四个寄存器,通过这两个地址信号,可以控制写入的数据是给哪一个寄存器的;

(6)八位数据信号D0~D7:三态门输入,用于和8086 CPU的数据总线相连,进行数据的传输;

(7)三组IO端口PA、PB、PC:三态门,用于外设数据的输入与输出,其中PC端口可以单独分解为高四位与低四位分别控制。

2.2.2 内部结构框图

led

2.2.3 8255A寄存器详解

(1)方式控制字

D7 D6 D5 D4 D3 D2 D1 D0
标志位 PA控制 PA模式 PC高4位 PB控制 PB模式 PC低4位

D7:标志位,直接置1即可

D6~D5:A组工作方式选择

D6 D5 工作方式
0 0 PA端口与PC端口高4位工作在方式0
0 1 PA端口与PC端口高4位工作在方式1
1 0 PA端口工作在方式2
1 1

D4:PA端口输入输出控制

0:PA端口配置为输出模式

1:PA端口配置为输入模式

D3:PC端口高四位输入输出控制

0:PC端口高四位配置为输出模式

1:PC端口高四位配置为输入模式

D2:B组工作方式选择

0:PB端口与PC端口低四位工作在方式0

1:PB端口与PC端口低四位工作在方式1

D1:PB端口输入输出控制

0:PB端口配置为输出模式

1:PB端口配置为输入模式

D0:PC端口低四位输入输出控制

0:PC端口低四位配置为输出模式

1:PC端口低四位配置为输入模式

(2)PC端口复位置位控制字

D7 D6 D5 D4 D3 D2 D1 D0
标志位 保留 PC端口选择 置/复位

D7:标志位,直接置0即可

D3~D1:PC端口选择

D3 D2 D1 PC端口
0 0 0 选择PC0
0 0 1 选择PC1
0 1 0 选择PC2
0 1 1 选择PC3
1 0 0 选择PC4
1 0 1 选择PC5
1 1 0 选择PC6
1 1 1 选择PC7

D0:置位复位选择,写0复位,写1置位

2.2.4 8255A地址计算

8255A有三个引脚与地址有关,分别是片选CS和两个地址线A0、A1,其中A0和A1的组合方式有四种,如下表所示:
A1 A0 描述
0 0 选择PA端口
0 1 选择PB端口
1 0 选择PC端口
1 1 方式字选择

如果CS通过反相器与8086 CPU的A15连接,A0和A1与8086 CPU的A0,A1相连,那么对应的地址分别是:

PA端口地址:1000 00000000 0000 B,即十六进制的8000 H

PB端口地址:1000 00000000 0001 B,即十六进制的8001 H

PC端口地址:1000 00000000 0010 B,即十六进制的8002 H

控制寄存器地址:1000 0000 0000 0011 B,即十六进制的8003 H

也就是说8255A的地址应该根据硬件连接决定,而不是唯一的。

2.2.5 8255A控制步骤

(1)8086 CPU在T1和T2状态通过20根地址线输出20位的地址,通过锁存器锁存地址

(2)8086 CPU在T3和T4状态通过16根数据下输出16位数据,通过地址总线传送至8255A

(3)设置8255A端口为输出模式

(4)给8255A写输出的数据

2.3 源代码

例题1:利用8255的PA端口,控制8个LED循环点亮。

解析过程:由于原理图中的CS直接接地,A0和A1接在8086地址的A1和A2上,所以,8255A的地址按照顺序应该是PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H,由于LED接在PA端口上,所以需要8086首先发送地址0000H,然后由于是配置PA端口为输出端口,所以控制字可以不用设置,默认为0即可。

代码如下。

led

注:

(1)程序中使用的AL寄存器、DX寄存器和CX寄存器在8086CPU中有以下几个特殊用途,如下表所示:

led

(2)移位指令比较

led

例题2:利用8255的PB端口的八个按键,控制PA端口8个LED。

解析过程:首先将PB端口配置为输入模式,然后PA端口配置为输出模式,而后将PB端口读取的数据按位取反直接传给PA即可,假设按键1按下的时候,PB端口读取的数据是1111 1110,按位取反后变为0000 0001,刚好是第一个LED电亮。由于硬件与第一章的硬件完全一致,所以地址也一致,即PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H。程序如下。

led

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分