8086 IO读写操作
如图所示,通过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读写操作的更多相关文章
- 库:IO读写操作
在Java文件读取路径要注意的地方: 计算机:"D:\" 程序:"D://" 内存与硬盘之间进行文件的相互传输过程 以应用程序为参考点,应用程序从硬盘中读取数据 ...
- java 实现文件读写操作
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* JAVA IO 读写操作 20 ...
- C# System.IO和对文件的读写操作
System.IO命名空间中常用的非抽象类 BinaryReader 从二进制流中读取原始数据 BinaryWriter 从二进制格式中写入原始数据 BufferedStream 字节流的临时存储 ...
- io流对文件读写操作
public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedRead ...
- (Unity)XML文件读写与IO文件操作类使用介绍
using System.Xml; //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
- Java 字节流实现文件读写操作(InputStream-OutputStream)
Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...
随机推荐
- Qt5.5.0在Linux下静态编译(加上-fontconfig编译项才能显示中文) good
测试系统环境:Ubuntu12.04 (32bit/64bit)编译软件环境:QT5.5.0 本文章主要介绍Linux下QT静态编译环境的搭建,以及如何编译我们的程序board_driver. 1 ...
- Android Java调用Qt写的so库
有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用.这样人家反编译你的apk,就知道你侵犯了人家的版权.为了达到混淆的目的,我们可以 ...
- 演练:创建和使用动态链接库 (C++)
我们将创建的第一种类型的库是动态链接库 (DLL). 使用 DLL 是一种重用代码的绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它 ...
- qt截获html请求(继承QNetworkAccessManager和QNetworkReply)
QtWebkit加载html页面,html中会有很多的请求,比如<img id="testImg" src="http://*.jpg" width=&q ...
- CMake编译Widget UI Qt程序
自从CMake被引入到KDE项目的编译系统中后,CMake的使用者日益增多,Qt也不例外,除了使用QMAKE编译Qt程序外,也可以使用CMake来编译Qt程序,并且CMake在使用上更灵活,特别是大型 ...
- property的使用(事件可能就是回调函数)
TOnUserInfoShow = procedure(userName:string;userAge:Integer)of object;//定义事件模型中的回调函数原型 TUserInfo = c ...
- 解除.NET中虚拟路径的疑惑
今天部署产品时,发现一个涉及到路径错误的bug,在开发环境下都OK,但是到了测试环境中却一直报错,经过一番排查,原来错误出在了HttpContext.Current.Server.MapPath这个方 ...
- awk数组统计
处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题) http://www.etiantian.org/index.html http://www.etiantian.or ...
- Android native进程间通信实例-binder篇之——用parcel传输数组
和之前稍微不同,这次要稍微分析一下 Parce.cpp 和 android_os_Parcel.cp p的源码,为的是能够掌握调试技巧,后续传输其它类型数据就能举一反三了! 1. 代码共享 这次 ...
- Hexo+NexT(四):Hexo站点及Next主题配置详解
采用Hexo及NexT搭建好网站以后,有些效果不是我们需要的,Hexo及NexT提供了强大的定制功能,本文章将要讲解的就是如何在对网站进行配置及调整,达到博主需要的效果. 本文章配置环境是Hexo 3 ...