51单片机I/O 引脚IO 口工作原理 一、P0端口的结构及工作原理 P0端口8位中的一位结构图见下图: 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为 P0.X 引脚的图标,也就是说 P0.X 引脚可以是 P0.0到 P0.7的任何一位,即在 P0口有8个与上图相同的电路组成。 下面,我们先就组成 P0口的每个单元部份跟大家介绍一下: 先看输入缓冲器:在 P0口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),大家看上图,上面一个是读锁存器的缓冲器,也就是说,要读取 D 锁存器输出端 Q 的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。下面一个是读引脚的缓冲器,要读取 P0.X 引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。 D 锁存器:构成一个锁存器,通常要用一个时序电路,时序的单元电路在学数字电路时我们已知道,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根 I/O口线中都是用一个 D 触发器来构成锁存器的。大家看上图中的 D 锁存器,D 端是数据输入端,CP 是控制端(也就是时序控制信号输入端),Q 是输出端,Q 非是反向输出端。 对于 D 触发器来讲,当 D 输入端有一个输入信号,如果这时控制端 CP 没有信号(也就是时序脉冲没有到来),这时输入端 D 的数据是无法传输到输出端 Q 及反向输出端 Q 非的。如果时序控制端 CP 的时序脉冲一旦到了,这时 D 端输入的数据就会传输到 Q 及 Q 非端。数据传送过来后,当 CP 时序控制端的时序信号消失了,这时,输出端还会保持着上次输入端 D 的数据(即把上次的数据锁存起来了)。如果下一个时序控制脉冲信号来了,这时 D 端的数据才再次传送到 Q 端,从而改变 Q 端的状态。 多路开关:在51单片机中,当内部的存储器够用(也就是不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器)时,P0口可以作为通用的输入输出端口(即 I/O)使用,对于8031(内部没有 ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为‘地址/数据’总线使用。那么这个多路选择开关就是用...