2.1 硬件原理图
8086的输入输出控制是通过8255芯片控制的,用LED代表输出的数据,按键代表输入的数据,八个LED接在8255的PA端口上,八个按键接在PB端口上,通过8086控制8255A进行数字量的输入与输出。
2.2 8255A简介
2.2.1 引脚图
(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 内部结构框图
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即可。
代码如下。
注:
(1)程序中使用的AL寄存器、DX寄存器和CX寄存器在8086CPU中有以下几个特殊用途,如下表所示:
(2)移位指令比较
例题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
+关注
关注
240文章
23102浏览量
657915 -
按键
+关注
关注
4文章
223浏览量
57561 -
8086
+关注
关注
1文章
30浏览量
18803
发布评论请先 登录
相关推荐
评论