0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

端口的输入与输出

汽车电子技术 来源:滑小稽笔记 作者:滑小稽 2023-03-02 09:56 次阅读

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
    led
    +关注

    关注

    237

    文章

    22450

    浏览量

    645881
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57340
  • 8086
    +关注

    关注

    1

    文章

    30

    浏览量

    18631
收藏 人收藏

    评论

    相关推荐

    请问f429i DMA访问外扩SRAM是否与内置SRAM的设置相同?

    什么区别?2.GPIO端口输入/输出数据寄存器可以以BYTE、WORD访问吗?DMA可以BYTE宽带读取GPIOx_IDR吗,还是必须32bits访问?谢谢!
    发表于 09-19 09:27

    请问如何在XST中有选择地禁用IBUF/OBUF插入?

    / OBUF插入”任何人都可以详细解释我我们是否选择性地禁用未连接到顶部模块端口输入/输出端口上的IBUF / OBUF插入?如何使用“buffer_type”约束。对于XST ?
    发表于 03-06 09:24

    请问如何管理XDC文件和顶级中的生成时钟?

    时钟,所以我使用命令“create-generate-clock”生成所需的生成时钟,并生成两个时钟。但我不知道如何在XDC中为每个时钟分配合适的fpga端口? (输入/输出或主时钟的相同端口
    发表于 04-26 08:08

    单片机反相器_小白学单片机 :AT89S51单片机基本硬件结构认识(3)精选资料分享

    AT89S51 单片机I/O端口及工作原理AT89S51单片机有4个8位的并行I/O端口P0、P1、P2和P3。每个端口均由锁存器、输出驱动器和输入
    发表于 07-30 06:53

    输入/输出端口的作用和用法

    输入输出端口输入/输出端口的作用和用法输入输出端口
    发表于 09-10 09:14

    HC32L072PTAT 的PA11、PA12脚我程序不能用作普通IO用

    关闭 stcGpioCfg.enOD = GpioOdDisable; ///< 端口输入/输出值寄存器总线控制模式配置->AHB stcGpioCfg.enCtrlMode = GpioAHB
    发表于 12-19 09:46

    MAX7313 16端口输入/输出扩展器

    MAX7313是I²C兼容的串行接口外围设备,可为微处理器提供16个I/O端口。每个I/O端口可以单独配置为漏极开路输出,额定输出电流50mA/5.5V;也可以配置为具有瞬态检测的逻辑
    发表于 07-27 10:29 1808次阅读
    MAX7313 16<b class='flag-5'>端口</b><b class='flag-5'>输入</b>/<b class='flag-5'>输出</b>扩展器

    产品说明书之外的收获—IBIS

    当您开始 PCB 设计时,您需要解决数字引脚的信号完整性问题。在您需要的众多基本信号完整性因素中,其中之一便是数字端口输入输出电容。如此细微的数据,在产品说明书中可能
    发表于 01-17 11:46 1628次阅读
    产品说明书之外的收获—IBIS

    笔记本输入输出端口介绍PPT资料下载

    笔记本输入输出端口介绍PPT资料下载
    发表于 04-08 11:09 1次下载

    • AD5590 – 16路输入/16路输出模拟I/O端口评估工具

    • AD5590 – 16路输入/16路输出模拟I/O端口评估工具
    发表于 03-21 15:41 2次下载
    •	AD5590 – 16路<b class='flag-5'>输入</b>/16路<b class='flag-5'>输出</b>模拟I/O<b class='flag-5'>端口</b>评估工具

    单片机反相器_小白学单片机 :AT89S51单片机基本硬件结构认识(3)

    AT89S51 单片机I/O端口及工作原理AT89S51单片机有4个8位的并行I/O端口P0、P1、P2和P3。每个端口均由锁存器、输出驱动器和输入
    发表于 11-23 17:06 1次下载
    单片机反相器_小白学单片机 :AT89S51单片机基本硬件结构认识(3)

    NAND闪存VDNF64G08xS50xx8V25-Ⅱ用户手册

    VDNF64G08XS50XX8V25-Ⅱ采用8Gx8bit,是一种64G位NAND闪存,具有备用容量2048M位。该装置在3.3V电压下工作。输入/输出引脚用作地址和数据的端口输入/
    发表于 06-08 10:47 1次下载
    NAND闪存VDNF64G08xS50xx8V25-Ⅱ用户手册

    如何最好地实现精确的时间和同步

    软件冗余的另一个优点是它使整个设备完全冗余。主用单元和备用单元相同。每个功能都是冗余的,包括振荡器、GNSS 接收器、端口输入/输出。对于硬件模块,它只是对自己的功能是多余的,而不是单元的其余部分。
    的头像 发表于 11-21 15:35 531次阅读
    如何最好地实现精确的时间和同步

    什么是端口声明

    模块定义包括一个端口列表,该列表用括号括起来。端口用于将数据传入或传出模块。模块可以有四种类型的端口输入输出、双向
    的头像 发表于 02-09 14:44 650次阅读
    什么是<b class='flag-5'>端口</b>声明

    连续时间系统的时域分析

    系统数学模型时域表示:端口输入-输出)描述(一元n阶微分方程)与状态方程描述(n元联立一阶微分方程)
    的头像 发表于 08-09 14:53 894次阅读
    连续时间系统的时域分析