如图所示,通过8086来读写io口,实现流水灯以及开关。本电路是基于8086最小模式下的三总线结构添加的,三总线结构原理较为复杂本篇就不对其原理进行介绍了,大家可以自行查阅相关引脚的功能从而实现。

本文仅介绍io端口的实现,和代码逻辑部分。

点击查看大图

概述:本文使用45h和40h两个端口,40h端口使用开关模拟白天或黑夜,45端口则控制LED的亮灭。

1.输出端口

输出口由译码电路、74ls373锁存器、以及8个LED灯构成。下面一一介绍。

(1).译码电路

  译码电路使用的是基本门电路实现的,大家也可以使用可编程并行接口芯片8255来实现,这里不做介绍。

如图所示当使用指令out 45h,al时,RD引脚为低电压,(注意这是8086CPU的引脚,上面有一个横线表示低电平有效。文中的横线默认不标出。读者自行对比图片。相同的标签是连接到一起的本文的RD连接的是WR)M/IO为低电压。地址45H也就是0010 0101B,我们将相应位置的地址线接上一个非门,之后将地址接入到一个8输入的或门上,当地址是45h时,进行或运算的结果是0,其它地址则一定是1,

再将其与读写信号RD以及M/IO相连接。其输出引脚命名为OUT1,将其作为片选信号接入锁存器的LE引脚。这样,这个模块实现的功能是当8086对45h端口进行写操作时,OUT1为高电平,其它情况为低电平。

(2).锁存器

 

8086cpu共有16根数据线,当发送的地址是偶地址时,数据线的低8位有效,当发送奇地址时数据线的高8位有效。

OUT1接入LE,当LE为高电压时锁存器的数据可以被改写,LE为低电压时数据锁存。

(3)LED灯

LED采用的是共阴极的接法,当发送的数据是01h时,led0处的电压为12V,

LED的标压是2.2V,额定电流是10mA。

我们需要用一个电阻分走12-2.2=9.8V的电压。而额定电流是10mA,于是限流电阻应该是9.8X10x10e-2=0.98欧姆。

 2.输入端口

输入端口的电路与输出端口类似就不一一介绍了。这里使用的是74HC245双向数据缓存器,AB/BA引脚控制数据的方向,高电平代表数据从A到B。低电平则相反。CE低电平时芯片有效。与上文的锁存器相反。所以直接用与门。

地址上40h的二进制是0100 0000B所以只需要将AB6接非门即可。由于是读操作。WR需要接一个非门。我们只需要用到一个Bit的数据,A1~A7接地即可。A0接开关。开关另一端接VCC。

 

8086 IO读写操作的更多相关文章

  1. 库:IO读写操作

    在Java文件读取路径要注意的地方: 计算机:"D:\" 程序:"D://" 内存与硬盘之间进行文件的相互传输过程 以应用程序为参考点,应用程序从硬盘中读取数据 ...

  2. java 实现文件读写操作

    import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* JAVA IO 读写操作 20 ...

  3. C# System.IO和对文件的读写操作

      System.IO命名空间中常用的非抽象类 BinaryReader 从二进制流中读取原始数据 BinaryWriter 从二进制格式中写入原始数据 BufferedStream 字节流的临时存储 ...

  4. io流对文件读写操作

    public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedRead ...

  5. (Unity)XML文件读写与IO文件操作类使用介绍

    using System.Xml;                //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...

  6. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  7. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  8. java使用IO读写文件总结

    每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...

  9. Java 字节流实现文件读写操作(InputStream-OutputStream)

    Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...

随机推荐

  1. win10应用开发——如何判断应用是在手机上运行还是电脑上运行

    原文:win10应用开发--如何判断应用是在手机上运行还是电脑上运行 在进行uwp应用开发的时候, 有时我们需要知道自己的应用是在手机端运行还是在桌面端运行,那么通过以下的api就可以进行判断: Wi ...

  2. einsum:爱因斯坦求和约定

    在Tensorflow.Numpy和PyTorch中都提供了使用einsum的api,einsum是一种能够简洁表示点积.外积.转置.矩阵-向量乘法.矩阵-矩阵乘法等运算的领域特定语言.在Tensor ...

  3. Rendering in Delphi using TCanvas (FMX)

    BY CRAIG CHAPMAN · PUBLISHED 2015-08-05 · UPDATED 2015-08-20   I have a customer with an application ...

  4. Python:Pandas学习

    import pandas as pd import numpy as np s = pd.Series([1, 3, 6, np.nan, 44, 1]) df= pd.DataFrame(np.r ...

  5. Windows Mount NFS Share from e.g. Linux

    Note: Not Stable, so steps below are for reference only ************ Linux Configuration NFS Share 1 ...

  6. Delphi Thread.Queue与Synchronize的区别(差别: Synchronize是阻塞,Queue是非阻塞)

    前话:  其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点 TThread.Queue和TThread.Synchronize的区别, 效果上:二 ...

  7. 当程序调用dll时获取dll路径,DLL中获取自身的句柄

    当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...

  8. JavaScript 一元正号运算符

    本文适合JavaScript初学者. 一元正号介绍 一元正号运算符(+)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值. 尽管一元负号也能转换非数值类型,但是一 ...

  9. 《Spring Cloud》学习(一) 服务治理!

    前言:之前网上学习过Spring Cloud,对于工作上需要是足够了,总归对于一些方面一知半解,最近难得有些闲暇时间,有幸读了崔永超先生的<Spring Cloud 微服务实战>,一方面记 ...

  10. spring 5.x 系列第1篇 —— springmvc基础 (xml配置方式)

    文章目录 一.搭建hello spring工程 1.1 项目搭建 1.2 相关配置讲解 二.配置自定义拦截器 三.全局异常处理 四.参数绑定 4.1 参数绑定 4.2 关于日期格式转换的三种方法 五. ...