您当前的位置:五五电子网电子知识单片机-工控设备51单片机51单片机并行I/O端口的结构及功能 正文
51单片机并行I/O端口的结构及功能

51单片机并行I/O端口的结构及功能

点击数:7417 次   录入时间:03-04 11:37:22   整理:http://www.55dianzi.com   51单片机
MSC—51是70年代末的产品,目前出现了很多功能更强大的 单片机 ,但在目前市场上的产品中MSC—51仍占单片机的多半产品,且MCS—51是其他单片机的基础。本文将详细讨论MSC—51的并行接口,目的是为单片机的使用者提供更好的理论依据。
2  MSC—51的并行I/O端口
2.1  I/O端口简介
I/O端口又称为I/O接口或I/O通路,是MSC—51 单片机 对外部实现控制和信息交换的必经之路,是一个过渡的大规模集成电路,用于信息传递过程中的速度匹配和增强单片机的负载能力。I/O端口可以实现和不同外设的速度匹配,以提高CPU的工作效率,可以改变数据的传送方式,如:内部并行总线与外部设备串行数据传送的转换。
2.2  MSC—51各并行I/O的组成
I/O端口分为串行口和并行口。串行I/O端口一次只能传送一位二进制信息;并行I/O端口一次可传送一个字节的数据。MSC—51 单片机 有四个并行端口,分别命名为P0、P1、P2、P3,每个端口都有八条端口线,用于传送数据或地址信息。由于每个端口的结构各不相同,因此它们在功能和用途上差别颇大。
每个I/O端口都由一个八位数据锁存器和一个八位数据缓冲器组成,其中八位数据锁存器的端口与P0、P1、P2、P3同名,属于21个特殊功能寄存器中的4个,对应内部RAM地址分别为80H、90H、A0H、B0H。需要输出数据时,8个数据锁存器用于对端口引脚上输入数据进行锁存。需要输入数据时,8个数据缓冲器用于对端口引脚上输入数据进行缓冲。另外访问并行I/O端口除了可以用字节地址访问外,还可以进行按位寻址。
3   P0综述
3.1  P0口功能
P0.7—P0.0为P0所用。P0口的访问地址是80H,位地址范围是80H—87H。由于P0口具有较大的负载能力,最多可推动8个TTL门,因此是真正的双向I/O口。
一般来说,P0口具有两种功能:第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU的输入/输出数据。输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。第二,P0.7—P0.0在CPU访问片外存储器时用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。
3.2  P0口的结构

P0是由一个输出锁存器(D型触发器),两个三态门缓冲22(控制读引脚或读锁存器),与门和多路开关MUX组成的输出控制电路,一对场效应晶体管FET构成的输出电路所组成。
P0口的多路开关的输入有两个:地址/数据输出和锁存器输出/Q,多路开关的切换由内部控制信号控制。
3.3 P0口的工作原理
3.3.1  P0口的I/O操作(通用I/O端口)
在P0口作为通用I/O端口时,控制电路中“控制”端输入为0电平。此时,多路开关MUX接入下方的锁存器的/Q端。由于“控制”输入为0,上端的FET截止。
输出操作
当内部总线信号置0时,锁存器输出/Q输出高电平,下端FET导通,由于上端FET截止,因此P0引脚输出低电平。当内部总线置1时,锁存器输出低电平,下端FET截止,由于上拉电阻的作用,P0口引脚输出高电平。
注意:由于两个场效应管均截止,使输出处于“悬浮”状态,因此当MOS负载连接时需要加上一上拉电阻,以保证端口能够正确的输出高电平。如图1所示。
输入操作
输入操作比较复杂,实际上有两种输入方式:
a.读引脚
在响应CPU的读引脚操作时,引脚的电平值通过缓冲器BUF1进入内部总线。注意,再执行这种类型的指令时,执行之前必须将端口锁存器置1.执行程序为:
MOV   P0,#0FFH;端口锁存器置1
MOV   A,P0;    读引脚
此时,下端FET截止,外部数据通过读引脚操作,把数据正确传给数据总线,若不执行 MOV  P0,#OFFH,则A点可能为高电平,此时下端FET导通,即P0引脚接地,无法正确输入外部电平数据。
b.读锁存器
在执行读锁存器的操作时,CPU首先完成将锁存器的输出值Q通过缓冲器BUF2读入,然后进行修改,再重新写到锁存器中去,即读锁存器一般完成的是“读—修改—写”的操作。这种类型的操作指令只有算术(INC,DEC,ADD),逻辑(ORC,XRL,ANL),位(JBC,CPL,CLR)操作指令等。采用读锁存器而不是读引脚操作可以避免一些错误,例如:(如图2)如果使用一个晶体管驱动继电器,当端口输出高电平驱动晶体管导通时,P0.x引脚的输出电平只有0.7V。如果将引脚信号读回来,就会得到一个低电平的错误结果;而采用读锁存器则会保证数据的准确。

P0口的两种数据操作
P0口的操作分两类:字节操作和位操作。
CPU对于P0口不仅可以作为一个八位口来操作,也可以按位来操作。有关字节操作指令以 MOV 为例:
输出    MOV  P0,A        ;P0←A
        MOV  P0,#data     ;P0←data
        MOV  P0,direct     ;P0←direct
输入    MOV  A,P0        ;A←P0
MOV  direct,P0     ;direct←P0
有关位操作指令,例如:
置位、清除  SETB   P0.i      ;P0.i←1
           CLR  P0.i         ;P0.i←0
输入,输出: MOV   P0.i,C    ;P0.i←Cy
            MOV   C,P0.i     ;Cy←P0.i
判    跳:JB  P0.i,rel        ;P0.i=1跳转
         JB  P0.i,rel         ;P0.i=0跳转
                              且清P0.i=0
逻辑运算:ANL  C,P0.i       ;Cy←(P0与Cy)
         ORL  C,P0.i        ;Cy←(P0与Cy)
P0.i中i=0……7。
因此P0口不仅可以以八位一组进行输入输出操作,还可以逐位定义各口线为输入或输出线的电平。例如
ORL P0,#00000010B可以使P0.2位口线输出而其余各位不变。
ANL P0,#11111101B可以使P0.1位口线输出,而其余各位不变。
3.3.2  P0口作为地址/数据复用总线使用(系统使用外存储器时)
控制电路的“控制”端置1,此时与门打开,MUX接向上端(地址/数据)信号。此时,输出端的两个FET都处于正常工作状态。P0口的地址/数据端与外部存储器的低8位地址线相连,在指令周期的前半个周期,传送外部存储器的低8位数据,而后半个指令周期则是把外部内存中的数据传送给CPU。
当P0的地址/数据口置1时,控制上拉电路的“与门”输出为1,上端FET导端,同时地址/数据通过反相器输出为0,下端FET截止,地址/数据线输出为1。
当P0的地址/数据口置0时,控制上拉电路的“与门”输出为0,上端FET截止,同时地址/数据输出通过反相器输出1,下端FET导通,地址/数据线输出为0。
此时,P0口作为地址/数据复用总线使用。上下两个FET处于反相,构成了推位式的输出电路,其负载能力大大增加,因此这时P0端口不用外加上拉电阻。
注意:P0口控制端的转换是通过指令进行的,即执行I/O总线操作时,如 MOV  P0,A,系统自动控制端置0,执行地址操作指令如MOVX,MOVC(EA=0时)时,则控制端自动置1。
在进行硬件系统的设计时,如果使用了外部存储器时,P0口成为整个系统的地址/数据复用总线,此时P0口不能在作为通用的I/O端口。因此一般情况下,P0作为地址/数据总线。
4  P1口综述
4.1  P1口的功能 
P1口的访问地址是90H,位地址范围是90H—97H,P1口可以驱动4个LSTTL负载,因此是准双向I/O口。
P1口的功能和P0口的第一功能相同,仅用于传递I/O输入/输出数据。
4.2  P1口的结构

                                     图3
包括输出锁存器输入缓冲器BUF1(读引脚),BUF2(读锁存器)以及由FET上拉电阻组成的输出/输入驱动器。
由图3可见,P1口与P0口的区别在于内部有上拉电阻,所以输出时不用外接上拉电阻,P1口没有地址/数据复用端口,因此没有控制端。
4.3 P1口的工作原理
P1口只能进行I/O总线操作,即工作原理同P0口作为I/O输入输出口时的工作原理,这里不再叙述。
4.4  P1口的多功能线
在80C52中,P1.0和P1.1线是多功能的,即除一般双向I/O口线之外,这两根口线还具有下列功能:
P1.0—定时器/计数器2的外部输入端T2;
P1.1—定时器/数据线2的外部控制端T2EX。
这时,该两位的结构与P3口的位结构相当。

[1] [2]  下一页


本文关键字:单片机  51单片机单片机-工控设备 - 51单片机