80C51的I/O端口结构及应用特性
一,I/O端口的结构
1,锁存器加引脚的典型结构
80C51的I/O端口都有内部总线实现操作控制。P0-P3四个I/O口都可以做普通I/O口,因此,要求具有输出锁存功能。内部总线有事分时操作,因此每个I/O端口都有相应的锁存器。然而I/O端口又是外部的输入/输出通道,必须有相应的引脚,故形成了I/O端口的锁存器加引脚的典型结构。 2,I/O口的复用功能
(1)I/O口的总线复用。80C51在使用并行总线扩展时,P0口可作为数据总线口和低8位地址总线口,这是,P0为三态双向口。P0口输出总线的地址数据信号,P2口输出高8位地址信号。
(2)I/O口的功能复用。I/O口的P3为功能复用的I/O端口。端口有复用输出的控制端;引脚也有复用输入的控制端。 3,准双向结构
P0,P1,P2,P3口做普通I/O口使用时,都是准双向口结构。准双向口的典型结构见P1口位结构图。准双向口的输入操作和输出操作本质不同,输入操作时读引脚状态;输出操作时对口锁存器的写入操作。有口锁存器和引脚电路可知:当有内部总线对只1或只0时,锁存器的0、1状态立即反应到引脚上。但是输入操作(读引脚)时,如果口锁存器的状态为0,引脚被嵌位在0状态,导致无法读出引脚的高电平输入。
二,I/O端口的应用特性
1,引脚的自动识别。无论P0,P2口的总线复用,还是P3口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。
2,口锁存器的读、该、写操作。许多涉及到I/O端口的操作,只是涉及口锁存器的读出、修改、写入的操作。这些指令都是一些逻辑运算指令、置位/清除指令、条件转移指令以及将I/O口作为目的地址的操作指令。
3,读引脚的操作指令。如果某个I/O口被指定为源操作数,则为
读引脚的操作指令。例如,执行MOV A,P1时,P1口的引脚状态传送到累加器中,执行MOV P1,A是,指令则将累加器的内容传送到P1口锁存器中。
4,准双向口的使用。由准双向口的结构可知,当口锁存器内容为0时Q为1,使输出场效应管导通,I/O引脚被嵌位在低电平,无论引脚输入1电平还是0电平,读引脚操作都是0状态。因此,准双向口作为输入口时,应先使锁存器置1,称之为置输入方式,然后在读引脚。例如,要将P1端口状态读入到累加器A中,应执行以下两条指令:
MOV P1,#0FFH ;P1口置输入方式
MOV A,P1 ;读P1口引脚状态到ACC中
5,P0口做普通I/O口使用。当不使用并行扩展总线时,P0、P2口都可用作普通I/O口。但P0为开漏结构,作I/O口时必须外加上拉电阻。
6,I/O口的驱动特性。P0口每个I/O口可输出驱动8个LSTTL(Low-power Schottky TTL)输入端,而P1,P2,P3口可以驱动4个LSTTL输入端。CMOS单片机的I/O口通常只能提供几毫安的驱动电流,在全MOS应用系统中几毫安输出电流足以满足很多CMOS电路输入驱动要求。
(2) P1口位
(3)P3口位
上两次我们做过两个实验,都是让P1.0这个管脚使灯亮,我们能设想:既然P1.0能让灯亮,那么其它的管脚可不能呢?看一下图1,它是8031单片机管脚的说明,在P1.0旁边有P1.1,P1.2?.P1.7,它们是否都能让灯亮呢?除了以P1开头的外,还有以P0,P2,P3开头的,数一下,一共是32个管脚,前面我们以学过7个管脚,加上这32个这39个了。它们都以P字开头,只是后面的数字不一样,它们是否有什么联系呢?它们能不能都让灯亮呢?在我们的实验板上,除了P10之外,还有P11 -> P17都与LED相连,下面让我们来做一个实验,程序如下: MAIN: MOV P1,#0FFH LCALL DELAY MOV P1,#00H LCALL DELAY LJMP MAIN
DELAY:MOV R7,#250 D1: MOV R6,#250 D2: DJNZ R6,D2 DJNZ R7,D1 RET END
将这段程序转为机器码,用编程器写入单片机中,结果如何?通电以后我们能看到8只LED全部在闪动。因此,P10->P17是全部能点亮灯的。事实上,凡以P开头的这32个管脚都是能点亮灯的,也就是说:这32个管脚都能作为输出使用,如果不用来点亮LED,能用来控制继电器,能用来控制其它的执行机构。 程序分析:这段程序和前面做过的程序比较,只有两处不一样:第一句:原来是SETB P1.0,现在改为MOV P1,#0FFH,第三句:原来是CLR P1.0,现在改为MOV P1.0,#00H。从中能看出,P1是P1.0->P1.7的全体的代表,一个P1就表示了所有的这八个管脚了。当然用的指令也不一样了,是用MOV指令。为什么用这条指令?看图2,我们把P1作为一个整体,就把它当作是一个存储器的单元,对一个单元送进一个数能用
相关推荐: