购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 传统型8051单片机简介

图1-1给出了8051单片机的不同封装形式及引脚。本节先来看一下8051单片机的4个双向输入/输出(I/O)端口引脚、控制引脚、晶振及电源引脚。

图1-1 8051单片机的不同封装形式及引脚

图1-2给出了8051单片机的4个8位并行端口P0、P1、P2、P3的位结构。这些端口都是双向的,每个端口位均包含两个三态输入缓冲器、一个输出锁存器及一个场效应管(FET)驱动器,其中P0端口位还包含一个上拉场效应管。位结构中的两个输入缓冲器分别受内部“读锁存器”和“读引脚”信号控制,位锁存器用典型的D触发器表示。

当CPU发出“写锁存器”信号到D触发器CL端时,内部总线的值将送入D触发器。

当CPU发出“读锁存器”信号到缓冲器1时,触发器Q端输出至内部总线上。

当CPU发送“读引脚”信号到缓冲器2时,外部引脚输入值将置于内部总线上。

一些指令读端口时将激活“读锁存器”信号,另一些指令则激活“读引脚”信号。对于“读—改—写”这样的指令操作,CPU发出的将是“读锁存器”信号。具体执行“读锁存器”还是“读引脚”将由CPU根据不同指令自动处理。有关细节将在1.4节“特殊功能寄存器”中讨论。

1. P0端口

P0端口位结构如图1-2(a)所示,包含输入缓冲器、锁存器、切换开关(MUX)、非门、与门、上拉场效应管T1、驱动场效应管T2。由该图可知,P0端口具有双重工作方式,既可作为普通I/O端口(General I/O Port),也可作为地址/数据总线(Address/Data Bus)。

图1-2 8051单片机的4个8位并行端口位结构

1)作为普通I/O端口

在“普通I/O端口”方式下,CPU发出控制电平“0”使与门输出“0”,T1截止,同时使MUX接通下面的触点,使 端连通T2栅极,内部总线与P0端口同相。由于上拉场效应管T1截止,输出驱动场效应管T2漏极开路,故而P0端口要外接上拉电阻。

下面分别说明P0端口在“普通I/O端口”方式下的输出与输入操作。

输出操作:以3.3节“花样流水灯”为例,8只LED阴极接P0,而阳极通过限流电阻接VCC引脚,这一组限流电阻同时扮演了上拉电阻的角色。如果将这一组LED阳极接P0端口,而阴极串接限流电阻后接GND引脚,尽管P0端口仍然在输出0、1序列,但8只LED却无法实现演示效果,因为场效应管T2没有上拉电阻。此时可仍将LED阳极接P0端口,而阴极接GND,电阻则改为一端接P0端口,另一端接VCC引脚。

输入操作:如果此前内部总线刚刚输出了低电平,此时锁存器Q=0, =1,驱动场效应管T2导通,P0端口呈现低电平,此时无论P0端口外部信号是“1”还是“0”,从P0端口引脚读取的信号都将为“0”,这显然将无法正确读取P0端口引脚信号。

故而,在执行输入操作前,应先向P0端口锁存器写“1”,D触发器的 端输出“0”使T2截止,外部引脚处于悬浮(Float/FLT)状态,变为高阻抗输入状态(此时T1也是截止的)。

在3.10节“继电器及双向晶闸管控制照明设备”中,使用P0.0作为K1按键输入信号引脚,P0.0引脚外接了上拉电阻(因为T1截止,T2漏极开路),但读取按键输入信号前,整个源代码中并未出现向P0.0引脚写“1”的操作。这是因为8051单片机上电时默认已经向所有端口(P0、P1、P2、P3)全部写入“1”,在仿真调试时观察到初始时LED0不亮(为灰色),这显然就是因为初始上电时,内部默认写入P0端口锁存器的“1”已经截止了T2。

2)作为地址/数据总线

P0端口作为地址/数据总线是通过CPU内部写控制信号“1”实现的。该信号使MUX连接上面的触点,“地址/数据”信号通过非门连接到T2的栅极。由于控制信号为“1”,“地址/数据”信号通过与门连接T1的栅极,实际上相当于“直接”或称“同相”连接到T1的栅极。下面分别说明在“地址/数据总线”方式下的输出与输入操作。

输出操作:输出的“地址/数据”信号将通过与门驱动T1,并同时通过非门驱动T2。例如,在输出信号“0”时,T1截止,T2导通;反之,在输出信号“1”时,T1导通,T2截止,从而以推挽方式实现信号输出。

输入操作:从外部设备读取输入“数据”信号时,“数据”信号将通过缓冲器2进入内部总线。在“数据”信号输入时,CPU将通过写控制信号“0”使T1截止,此时相当于瞬间又自动回到了“普通I/O端口”方式,随即CPU自动向P0端口锁存器写控制信号“1”截止T2,并通过“读引脚”控制缓冲器读取“外部数据”信号,此时的“普通I/O端口”方式与此前讨论过的“普通I/O端口”方式有两个差别:一是无须外部上拉,二是向P0端口锁存器写控制信号“1”截止T2的操作是自动完成的。

在“地址/数据总线”方式下,数据总线(D0~D7)及地址总线的低8位(A0~A7)信号分时复用P0端口,地址总线的低8位信号在地址锁存允许(Address Latch Enable,ALE)信号的下降沿时被锁存到外部地址锁存器中(如74LS373),地址总线的高8位信号则通过P2端口输出,不经过锁存器。紧接着的数据输出或输入操作将在 /P3.6及 /P3.7的自动控制下完成。

小结:P0端口在“普通I/O端口”方式下为准双向口,因为P0端口在输出“0”后被改为输入端口时,要先输出“1”,然后才能成为输入端口。P0端口在“地址/数据总线”方式下为真正的双向I/O端口。

2. P1端口

P1端口是通用的准双向I/O端口,由一个输出锁存器、两个三态输入缓冲器和一个输出驱动场效应管及内部上拉电阻组成。P1端口与P0端口作为普通I/O端口时的原理相似,相当于P0省去了与门、非门、MUX,且上拉场效应管T1由内部上拉电阻代替。P1端口无须外接上拉电阻,与P0端口作为普通I/O端口时的操作一样,作为输入端口时,除了初始时无须使P1端口写“1”以截止驱动场效应管以外,如果P1端口曾输出信号“0”,则每当P1由输出端口改为输入端口时,都要先输出信号“1”以截止场效应管,然后才能成为输入端口。

3. P2端口

P2端口与P1端口相比多出了一个转换控制部分,当P2端口与P0端口配合作为“地址/数据总线”方式下的高8位地址线(A8~A15)时,CPU将写控制信号“1”使MUX切换到右边。在“地址/数据总线”方式下,无论P2端口中剩余多少引脚,均不能被用于普通I/O端口的操作。

反之,CPU通过写控制信号“0”将MUX切换到左边,使之工作于“普通I/O端口”方式。P2端口作为“普通I/O端口”时,P2端口锁存器Q端通过非门驱动场效应管,相当于P1的 端直接驱动场效应管。在“普通I/O端口”方式下,P2端口与P1端口同为准双向I/O端口。

4. P3端口

P3端口为具有双重功能的I/O端口,与P1端口相比,增加了第二输入/输出功能。

在P3端口作为普通I/O端口时,CPU将第二输出功能控制线信号保持为“1”,锁存器Q端通过与非门(此时等价于非门)驱动场效应管,相当于P1端口通过 端直接驱动场效应管,或相当于P2端口通过Q端经非门驱动场效应管。在这种方式下,对P3端口的读/写操作与P1、P2的相同。

下面接着讨论P3端口处于第二输入/输出功能时的相关操作。

当P3端口处于第二输出功能时,CPU自动向P3端口锁存器写“1”,由于Q=1,与非门相当于一个非门,此时P3端口输出第二功能信号。例如,通过TXD引脚输出的SBUF寄存器串行数据及 引脚输出的读/写控制信号。

当P3端口处于第二输入功能时,CPU除自动向P3端口锁存器写“1”,置Q=1以外,还将向第二功能输出线写“1”,以保证Q端和第二功能输出线经过与非门后输出“0”,以使场效应管T截止,此时所读取的P3端口引脚信号将通过缓冲器3直接进入第二功能输入端。例如,RXD、INT0、INT1、T0、T1引脚信号将通过第二功能输入端分别进入单片机内部的串行模块、外部中断处理模块、定时/计数器模块进行处理。

在下述情况下,P3相应引脚将处于第二功能状态。

· 启动串行通信模块(RXD/TXD)。

· 使能外部中断输入( )。

· 定时/计数器配置为外部计数状态(T0/T1)。

· 访问外部扩展存储器或接口扩展器件( )。

在P3端口处于第二功能状态时,P3.0~P3.7引脚分别对应于RXD、TXD、 、T0、T1、 引脚。第3章有关串口、外部中断及定时/计数器的案例分别涉及RXD、TXD、 、T0、T1,第4章有关62256存储器扩展案例涉及了 引脚,它们用于总线控制。

5. 8051单片机的其他相关引脚

传统8051单片机的控制引脚有RST、ALE/ /VPP,其中RST(Reset)引脚连接系统复位电路,在Proteus中RST引脚未连接复位电路时不影响仿真,ALE引脚在存储器扩展和I/O端口扩展时使用, 引脚用于选择程序从内部或外部ROM执行。

传统8051单片机的XTAL1、XTAL2引脚通常连接12MHz或11.0592MHz晶体振荡器(简称晶振),在串行通信案例中多数选择11.0592MHz晶振。Proteus默认晶振连接时不影响仿真运行,这是因为晶振频率可在芯片属性中设置。主电源引脚VSS、VCC分别接GND和+5V电源,在Proteus仿真电路中,电源引脚全部默认被连接。 0+mOAus7tJjJl7quQ8sH/c55bhV7P/cE7yM/LpPwUzJabPs7p0dDIG9M1MwWYRFu

点击中间区域
呼出菜单
上一章
目录
下一章
×