⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter6.htm

📁 我们学校教授的课件 很好的学习助手啊 里面讲的很详细 汉好
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<p align="center"><img src="8255zh10.gif" width="394" height="386"
alt="8255zh10.gif (5650 bytes)"></p>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">例如,某8255A的控制口地址为0EEH,将其PC<sub>3</sub>置0的操作为:</font></p>
  <blockquote>
    <blockquote>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; AL,06H&nbsp; ;control word</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">OUT&nbsp; 0EEH,AL</font></p>
    </blockquote>
  </blockquote>
</blockquote>

<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">四、8255A的工作方式</font></h3>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 8255A共有3种工作方式,分别称为方式0、方式1和方式2。其中,端口B可以工作在方式0和方式1,端口A可以工作在任何一种方式下。</font></p>
</blockquote>

<blockquote>
  <h4 align="left"><font face="宋体" size="5" color="#FFFFFF">1、方式0---基本的输入/输出方式</font></h4>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 在方式0下,任何一个端口都可以作为输入口或者输出口,各端口之间没有规定必然的关系。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; </font><font
  face="宋体" size="5" color="#00FFFF">方式0适用于无条件传输或者查询式传输方式。</font></p>
  <h4 align="left"><font face="宋体" size="5" color="#FFFFFF">2、方式1---选通的输入/输出方式</font></h4>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 在方式1下,端口A和端口B可以工作在输入或输出方式,但是要使用端口C的固定的数位作为选通信号和应答信号。端口A和端口B有一个工作于方式1,需要端口C的3个数位。不用作控制信号的端口C的其他数位,可以工作为方式0的输入或输出状态。</font></p>
</blockquote>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1)方式1输入情况</font></p>
</blockquote>

<p align="center"><img src="8255fsh1ru.gif" width="659" height="371"
alt="8255fsh1ru.gif (8903 bytes)"></p>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1)<span
  style="text-decoration: overline">STB</span>---选通信号。(Strobe)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输入,低电平有效。由外设送往8255A,当其有效时,8255A接收外设发送的数据,该数据被接收到8255A的数据输入缓冲器中。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">2)INF---输入缓冲器满信号。(Input 
  Buffer Full)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,高电平有效。由8255A送往CPU,供CPU查询,表示当前的输入缓冲器中已经有了一个新的数据。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">3)INTR---中断请求信号。(Interrupt 
  Request)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,高电平有效。由8255A送往CPU。当<span style="text-decoration: overline">STB</span>的有效低电平结束,并且IBF为有效的高电平后,8255A向CPU发出此信号,作为请求CPU读取数据的中断请求信号。CPU发出<span
  style="text-decoration: overline">RD</span>信号有效后,会将INTR复位为低电平。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">4)INTE---中断允许信号。(Interrupt 
  Enable)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  该信号没有输出端,当INTE=1时,允许中断请求,INTE=0时,禁止中断请求。INTE的状态是由端口C置1/置0控制字来控制的。在A组中,对应于PC<sub>4</sub>,在B组中,对应于PC<sub>2</sub>。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">2)方式1输出情况</font></p>
</blockquote>

<p align="center"><img src="8255fsh1chu.gif" width="658" height="370"
alt="8255fsh1chu.gif (8475 bytes)"></p>

<p align="left"> </p>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1)<span
  style="text-decoration: overline">OBF</span>---输出缓冲器满信号。(Onput Buffer 
  Full)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,低电平有效。由8255A送往外设,表示当前的输出缓冲器中已经有了一个由CPU输出的新的数据,通知外设将该数据取走。该信号由<span
  style="text-decoration: overline">WR</span>信号的上升沿置为有效的低电平,由<span
  style="text-decoration: overline">ACK</span>信号复位为高电平。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">2)<span
  style="text-decoration: overline">ACK</span>---外设响应信号。(Acknowledge)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输入,低电平有效,由外设送给8255A。该信号有效时,表明CPU通过8255A送往外设的数据已经到达了外设。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">3)INTR---中断请求信号。(Interrupt 
  Request)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,高电平有效。由8255A送往CPU。当输出设备已经从8255A的端口中提取了数据,并发出<span
  style="text-decoration: overline">ACK</span>之后,8255A向CPU发出此信号,作为请求CPU再次输出数据的中断请求信号。<span
  style="text-decoration: overline">WR</span>的下降沿来到后,INTR复位为低电平。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">4)INTE---中断允许信号。(Interrupt 
  Enable)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  该信号没有输出端,当INTE=1时,允许中断请求,INTE=0时,禁止中断请求。INTE的状态是由端口C置1/置0控制字来控制的。在A组中,对应于PC<sub>6</sub>,在B组中,对应于PC<sub>2</sub>。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; </font><font
  face="宋体" size="5" color="#00FFFF">若8255A的某一个端口工作于方式1下,端口C中自动提供了数位作为控制信号,尤其是提供了中断请求信号,所以,方式1多使用在CPU和外设的中断传送方式中。</font></p>
  <h4 align="left"><font face="宋体" size="5" color="#FFFFFF">3、方式2---双向传输方式。</font></h4>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">该当时只适用于端口A,端口C用5个数位为端口A提供控制信号。</font></p>
</blockquote>

<p align="center"><img src="8255fsh2.gif" width="416" height="438"
alt="8255fsh2.gif (6118 bytes)"></p>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1)<span
  style="text-decoration: overline">OBF</span><sub>A</sub>---输出缓冲器满信号。(Onput 
  Buffer Full)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,低电平有效。由8255A送往外设,表示当前的输出缓冲器中已经有了一个由CPU输出的新的数据,通知外设将该数据取走。该信号由<span
  style="text-decoration: overline">WR</span>信号的上升沿置为有效的低电平,由<span
  style="text-decoration: overline">ACK</span>信号复位为高电平。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">2)<span
  style="text-decoration: overline">ACK</span><sub>A</sub>---外设响应信号。(Acknowledge)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输入,低电平有效,由外设送给8255A。该信号有效时,表明CPU通过8255A送往外设的数据已经到达了外设。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">3)<span
  style="text-decoration: overline">STB</span><sub>A</sub>---选通信号。(Strobe)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输入,低电平有效。由外设送往8255A,当其有效时,8255A接收外设发送的数据,该数据被接收到8255A的数据输入缓冲器中。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">4)INF<sub>A</sub>---输入缓冲器满信号。(Input 
  Buffer Full)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,高电平有效。由8255A送往CPU,供CPU查询,表示当前的输入缓冲器中已经有了一个新的数据。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">5)INTR<sub>A</sub>---中断请求信号。(Interrupt 
  Request)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  输出,高电平有效。由8255A送往CPU。不管是输入动作还是输出动作,当一个动作完成而要进入下一个动作时,8255A向CPU发出此信号,作为请求CPU进行下一次操作的中断请求信号。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">6)INTE<sub>1</sub>---中断允许信号。(Interrupt 
  Enable)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  该信号没有输出端,当INTE<sub>1</sub>=1时,允许中断请求,通知CPU可以往8255A的端口A</font><font
  face="宋体" size="5" color="#FFFF00">输出</font><font face="宋体" size="5"
  color="#FFFFFF">一个数据;INTE<sub>1</sub>=0时,禁止中断请求。INTE<sub>1</sub>的状态只能由端口C置1/置0控制字来控制的。对应于PC<sub>6</sub>。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">7)INTE<sub>2</sub>---中断允许信号。(Interrupt 
  Enable)</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; 
  该信号没有输出端,当INTE<sub>2</sub>=1时,允许中断请求,通知CPU可以从8255A的端口A</font><font
  face="宋体" size="5" color="#FFFF00">读入</font><font face="宋体" size="5"
  color="#FFFFFF">一个数据;INTE<sub>2</sub>=0时,禁止中断请求。INTE<sub>2</sub>的状态只能由端口C置1/置0控制字来控制的。对应于PC<sub>4</sub>。</font></p>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">&nbsp;&nbsp;&nbsp; </font><font
  face="宋体" size="5" color="#00FFFF">如果一个外设既可以作为输入设备,也可以作为输出设备,并且输入输出动作不会同时进行,那么,该外设与8255A的端口A相连时,可以令端口A工作在方式2。</font></p>
</blockquote>

<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">五、8255A应用举例</font></h3>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1、8255A作为机床开关量输入输出接口,简图如下所示,令端口A为输入,端口B和端口C为输出,都工作在方式0。</font></p>
</blockquote>

<p align="left"><a href="8255yybig.gif"><img src="8255yy.gif" width="740" height="398"
alt="8255yy.gif (9774 bytes)"></a></p>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">图中,8255A的端口地址为2E0H~2E3H。其方式选择控制字为90H。</font></p>
</blockquote>

<blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">1)设置工作方式:</font></p>
  <blockquote>
    <blockquote>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; AL,90H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; DX,2E3H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">OUT&nbsp; DX,AL</font></p>
    </blockquote>
  </blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">2)读入端口A的值,并判断PA<sub>1</sub>对应的开关是否合上。</font></p>
  <blockquote>
    <blockquote>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; DX,2E0H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">IN&nbsp; AL,DX</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">TEST AL,02H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">JZ&nbsp; HAV_ON</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">...</font></p>
    </blockquote>
  </blockquote>
  <p align="left"><font face="宋体" size="5" color="#FFFFFF">3)将PB<sub>5</sub>对应的指示灯点亮。</font></p>
  <blockquote>
    <blockquote>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; DX,2E1H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV&nbsp; AL,20H</font></p>
      <p align="left"><font face="宋体" size="5" color="#FFFFFF">OUT&nbsp; DX,AL</font></p>
    </blockquote>
  </blockquote>
</blockquote>

<p align="left"> </p>

<p align="center"><a href="../main/index.htm">返回目录</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -