📄 chapter6.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>8255A</title>
</head>
<body bgcolor="#42693A" text="#FFFFFF">
<h1 align="center"><font face="宋体" color="#FFFFFF" size="6">第六章
可编程并行输入输出接口</font></h1>
<h2 align="center"><font face="宋体" color="#FFFFFF" size="6">§6.1 概述</font></h2>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、接口(Interface)</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"> 接口是CPU和外设之间进行信息传输的“中介”部件。一般的接口具有寻址(译码)、输入输出、数据转换、可编程、中断管理等功能。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">二、CPU和外设之间交换的数据的种类</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1、数字量。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、开关量。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3、模拟量。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">三、CPU和外设之间的并行数据传输方式</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1、程序传送方式</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1)无条件传送方式:若程序员能够确认外设处于“准备好”或者“不忙”状态,则可以不必查询外设的状态,而直接和外设进行数据传送。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">使用场合及优缺点:使用简单方便,经常用在传送不太频繁、可靠性要求不高、较简单的外设。</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2)条件传送方式/查询式传送:CPU通过执行程序,不断读取并测试外设的状态,只有查询到外设“准备好”(输入设备)或“不忙”(输出设备)时,CPU才执行输入输出指令与外设之间交换数据。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">使用场合及优缺点:可以使用在可靠性要求较高的场合,但是由于多数时间用在查询外设的状态上,浪费了大部分的机时,效率过低。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、中断传送方式:当输入设备“准备好”或者输出设备“不忙”时,外设向CPU发出传送数据的中断请求,使CPU停止当前的工作,而执行一次数据传送。数据传送执行完成之后,CPU又可以接着执行原来的工作。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">使用场合及优缺点:可以使用在可靠性要求较高的场合,可以实现相对高效率的控制程序,可以实现实时处理。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3、DMA传送方式(Direct
Memery Access):外设利用专门的电路直接和存储器进行数据传送,不必经过CPU。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">使用场合及优缺点:可以高速而可靠地进行大数据量的传送,但是电路较复杂,需要专门的DMA控制器。</font></p>
<p align="left"> </p>
</blockquote>
<h2 align="center"><font face="宋体" color="#FFFFFF" size="6">§6.2
几种常用的通用TTL芯片</font></h2>
<p align="left"> </p>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、缓冲器74LS244</font></h3>
<p align="center"><img src="74ls244.gif" width="437" height="408"
alt="74ls244.gif (5177 bytes)"><font face="宋体" size="5" color="#FFFFFF">
</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">若<span
style="text-decoration: overline">1G</span>=<span style="text-decoration: overline">2G</span>=0,则Y=A。</font></p>
</blockquote>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">二、总线收发器/双向缓冲器74LS245</font></h3>
<p align="center"><img src="74ls245.gif" width="350" height="361"
alt="74ls245.gif (4449 bytes)"></p>
<p align="left"> </p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">当<span
style="text-decoration: overline">E</span>=0时,若DIR=0,则A=B,若DIR=1,则B=A。</font></p>
</blockquote>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">三、3-8译码器74LS138</font></h3>
<p align="center"><img src="74ls138.gif" width="356" height="303"
alt="74ls138.gif (3801 bytes)"></p>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">四、8输入与非门74LS30</font></h3>
<p align="center"><img src="74ls30.gif" width="303" height="291"
alt="74ls30.gif (2043 bytes)"></p>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">五、非门74LS04</font></h3>
<p align="center"><img src="74ls04.gif" width="277" height="177"
alt="74ls04.gif (1206 bytes)"></p>
<p align="center"> </p>
<h2 align="center"><font face="宋体" color="#FFFFFF" size="6">§6.3 IBM PC/XT总线</font></h2>
<p align="center"> </p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">共62芯,主要包括以下信号:</font></p>
<blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、8位双向数据线:</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">D<sub>7</sub>~D<sub>0</sub></font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">二、20位地址总线:</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">A<sub>19</sub>~A<sub>0</sub>,传输I/O地址时,A<sub>19</sub>~A<sub>16</sub>无效。对I/O地址操作,一般只适用A<sub>9</sub>~A0,地址范围为0~03FFH。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">三、控制线:</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1、ALE---地址锁存允许,由8288提供。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、IRQ2~IRQ7---中断请求输入。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3、<span
style="text-decoration: overline">IOR</span>---I/O读命令。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">4、<span
style="text-decoration: overline">IOW</span>---I/O写命令。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">5、<span
style="text-decoration: overline">MEMR</span>---存储器读命令。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">6、<span
style="text-decoration: overline">MEMW</span>---存储器写命令。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">四、其他控制线、状态线和辅助线。</font></h3>
<p align="left"> </p>
</blockquote>
<p align="center"><font face="宋体" color="#FFFFFF" size="6">§6.4 8255A</font></p>
<p align="center"> </p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">8255A是可编程的并行输入输出接口芯片。</font></p>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">一、8255A的内部结构</font></h3>
<p align="center"><img src="8255nbjg.gif" width="604" height="346"
alt="8255nbjg.gif (10264 bytes)"></p>
<blockquote>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">1、数据端口A、端口B和端口C</font></h4>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">8255A有3个独立的8位端口,可以分别设为输入或输出。</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1)端口A:包括一个8位的输入锁存器和一个8位的输出锁存/缓冲器,输入和输出均可受到锁存,该端口可以用在双向传输的场合。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2)端口B:包括一个8位的输入缓冲器和一个8位的输出锁存/缓冲器。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3)端口C:包括一个8位的输入缓冲器和一个8位的输出锁存/缓冲器。</font></p>
</blockquote>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">2、A组控制和B组控制电路</font></h4>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">该电路接收读写控制信号和控制字,决定两组端口的工作方式。</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1)A组:端口A和端口C的高4位(PC<sub>7</sub>~PC<sub>4</sub>)。</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2)B组:端口B和端口C的低4位(PC<sub>3</sub>~PC<sub>0</sub>)。</font></p>
</blockquote>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">3、读/写控制逻辑</font></h4>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">该部分电路接收控制信号,负责管理数据的传输过程。</font></p>
</blockquote>
<div align="center"><center>
<table border="1" width="68%">
<tr>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><span
style="text-decoration: overline"><big><big>CS</big></big></span></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><big><big>A<sub>1</sub></big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><big><big>A<sub>0</sub></big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><span
style="text-decoration: overline"><big><big>RD</big></big></span></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><span
style="text-decoration: overline"><big><big>WR</big></big></span></td>
<td width="55%" align="center" style="color: rgb(0,0,0)" bgcolor="#BFCC82"><big><big>操作</big></big></td>
</tr>
<tr>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>0</big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>0</big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>0</big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>0</big></big></td>
<td width="10%" align="center" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>1</big></big></td>
<td width="55%" style="color: rgb(0,0,0)" bgcolor="#79B8BF"><big><big>读端口A</big></big></td>
</tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -