技术论文

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

字号+ 作者:admin 来源:未知 2010-04-17 10:32 我要评论( )

1 引言 MSC—51是70年代末的产品,目前出现了很多功能更强大的单片机,但在目前市场上的产品中MSC—51仍占单片机的多半产品,且MCS—51是其他单片机的基


1   引言

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口的结构

  

图1

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。如果将引脚信号读回来,就会得到一个低电平的错误结果;而采用读锁存器则会保证数据的准确。

 

图2

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口的位结构相当。

5  P2口综述

5.1  P2口的功能

P2口的访问地址是A0H,位地址范围A0H—A7H。P2口最多可以驱动4个LSTTL负载,因此属于准双向口。

P2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。

5.2  P2口的结构

          

图  4

由图4可看出,由于P2口有了第二功能,则较P1口,P2口增加了一个多路开关,用于控制P2口的工作方式。

多路开关的输入有两个:一个是锁存器的输出Q端,另一个是地址寄存器的高位输出端。通过控制端的信号来控制他们的输入。

注意:锁存器的输出端是Q而不是/Q,故多路开关之后需接反相器。当控制信号为0时,P2口工作在I/O口状态,多路开关接通锁存器。

若内部总线输出0,输出锁存器Q端为0,信号经反相器后输出1,FET导通,输出低电平,若内部总线输出1,则过程与上述相反。

当控制信号为1时,P2口工作输出高8位地址,P2口的输出电平将随地址输出的0、1而1、0的变化。

5.3  P2口的工作原理

5.3.1  P2口的I/O操作

P2口的I/O操作与PO口的I/O同,这时不再重述。

5.3.2  P2口的地址总线操作

P2口可以输出程序存储器或片外数据存储器的高8位地址,与P0输出的低地址一起构成16位地址线,从而可分别寻址64KB的程序存储器或片外数据存储器。

5.4  P2口使用中注意的问题

(1)一般P2口不用于传送存储器的读写数据,因此P2口无需外加地址锁存器。

(2)如果使用256B的外部RAM,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,此时P2口仍可以做通用I/O端口,如MOV  A,@R0或MOV  A,@R0。

如果访问外部ROM或使用大于256B  RAM时,P2口必须作为外存储器的高8位地址总线,如MOVX  A,@DPTR;访问外部数据存储器MOVX  A,@A+DPTR;访问外部程序存储器,这里使用了16位的寄存器DPTR。

6  P3口综述

6.1  P3口功能

P3口的访问地址是B0H,位地址范围是B0H——B7H,P3口可推动4个LSTTL门,是准双向口。P3口有两个功能:第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。

P3.0—RXD    串行数据接收口

P3.1—TXD    串行数据发送口

P3.2—INT0  外中断0输入

P3.3—INT1  外中断1输入

P3.4—T0    计数器0计数输入

P3.5—T1    计数器1计数输入

P3.6—WR    外部RAM写选通信号

P3.7—RD    外部RAM读选通信号

6.2  P3口的结构 

图  5

由图5可见,P3口的结构与P1口的区别在于:(1)P3口中增加了一个与非门。与非门有两个输入端:一个为锁存器的Q端,另一个为第二功能控制输出。(2)有两个输入缓冲器,第二功能取自第一个缓冲器的输出端。

6.3  P3口的工作原理

6.3.1  通用I/O模式

在通用I/O模式下,“第二输出功能”为1电平,以保证与非门打开,其工作方式与P0口的I/O模式同。

6.3.2  P3口作为第二功能模式

在多用途的情况下,P3分别作为串行口,外中断输入,外部数据输入和系统扩展时使用的WR和RD口信号的端口。此时,锁存器Q端置1电平以保证与门是打开的。

在做第二功能输出时,控制信号通过与非门,FET输出。在做第二功能输入时,信号通过下端第二功能的缓冲器输入。

7结束语

本文详细介绍了P0、P1、P2、P3端口的结构和功能,并对使用MSC—51单片机端口应注意的问题进行了分析和讨论,为更好地利用和分配MSC—51单片机端口提供了很好的依据。


转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 蓝牙井下人员定位系统

    蓝牙井下人员定位系统

    2010-10-25 21:35

  • 开发高压大容量交流变频器的可行性研究

    开发高压大容量交流变频器的可行性研究

    2010-05-01 14:17

  • 智能断路器及现场总线

    智能断路器及现场总线

    2010-04-17 10:37

  • 单片机应用系统的抗干扰措施

    单片机应用系统的抗干扰措施

    2010-04-17 10:37

网友点评