六,单片机的引脚介绍:
序号 | 名称 | 说明 |
---|---|---|
1~8 | P1.0~P1.7 | 端口P1, 90H~97H(位地址) |
9 | RST | 复位信号输入端(至少有2个机器周期的高电平) |
10~17 | P3.0~P3.7 | 端口P3, 该端口具备第二功能, B0H~B7H(位地址) |
18 | XTAL2 | 时钟震荡器输出端,内部震荡器输出段 |
19 | XTAL1 | 时钟震荡器输入端,内部震荡器输入段 |
20 | GND | 电源地 |
21~28 | P2.0~P2.7 | 端口P2, A0H~A7H(位地址) |
29 | /PSEN | 外部ROM读选通信号 |
30 | ALE/PROG(低) | 地址锁存信号端/片内EEPROM编程脉冲。ALE:用来锁存P0口送出的低8位地址。PROG(低):片内有EEPROM的芯片,在EEPROM编程期间,输入编程脉冲。 |
31 | EA(低)/VPP | 内外ROM选择/片内EEPROM编程电源。EA:EA=1时从内部开始执行程序;EA=0时从外部开始执行程序;VPP:片内有EEPROM的芯片,在EEPROM编程期间,施加编程电源VPP |
32~39 | P0.7~P0.0 | 端口P0 |
40 | VCC | 电源,接+5V |
1. P0口的结构及工作原理
P0口字节地址为80H,位地址80H~87H。
8个引脚组成,每个引脚可带动8个TTL负载。
可作为外部程序的存储器,是双向I/O口。
P0端口由1个输入锁存器,1个输出驱动电路(1对场效应管组成),1个输出控制端(多路开关、1个非门、1个与门)构成。(标号为P0.X引脚的图标,表示引脚可以是P0.0~P0.7的任何一位)
P0端口位结构图如图:
先介绍组成P0口的每个单元部分。
(1)输入缓冲器
在P0口中,有两个三态的缓冲器,三态门有3个状态,即在其输出端可以是高电平、低电平,同时还有一种高阻状态(或称为禁止状态)。
图中,上面一个是读锁存器的缓冲器,要读取D锁存器输出端Q的数据,需要使读锁存器中这个缓冲器的三态控制端(“读锁存器”端)有效。
下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为“读引脚”的三态缓冲器的控制端有效,引脚上的数据才会传输到单片机的内部数据总线上。
(2)D锁存器
D端是数据输入端,CP是时钟,Q是输出端。Q非是反向输出端。(具体参考数字逻辑电路相关书籍)
(3)多路开关
在51单片机中,当内部的存储器(RAM+POM)够用时,P0口可以作为通用的I/O使用。
对于8031(内部没有ROM)的单片机,或者编写的程序超过了单片机内部的存储器容量需要外扩存储器时,P0口就作为地址/数据总线使用。
多路选择开关:选择是作为普通I/O口使用 还是作为地址/数据总线使用的选择开关。
当多路开关与下端接通时,P0口作为普通的I/O口使用;
当多路开关是与上端接通时,P0口作为地址/数据总线使用。
(4)输出驱动
从图可看出,P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当Vl导通时,V2截止,当V2导通时,Vl截止。
下面是P0口作为I/O口 及地址/数据总线 使用时的具体工作过程。
(1)作为I/O端口使用时的工作原理
P0口用作通用I/O口,其由数据总线向引脚输出的工作过程:写锁存器信号CP有效,锁存器的输入端D→Q非→多路开关→V2管的栅极→V2管的漏极→输出端P0.X。
P0作为I/O输出时,控制端为0,这时与门输出的也是一个0,此时Vl管就截止,在多路控制开关的控制信号是0时,MUX与Q非相接。
此时,P0是漏极开路输出状态,在驱动NMOS电路时,需要外接上拉电阻。
P0用作输入时,应先将锁存器写“1”,这时V1,V2均截止,可做高阻抗输入,通过三态缓冲器读取引脚信号,完成输入。
注意!!
(当从内部总线输出低电平后,锁存器Q=0,Q非=1,场效应管V2接通,端口线呈低电平,此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。)
(2)作为地址/数据复用口使用时的工作原理
P0口作为地址/数据复用口使用,若从P0输入地址或数据时,控制端为高电平,MUX与反相器的输出端相连,驱动V2管;同时与门开锁,地址/数据线信号通过与门驱动V1管,这样数据地址信号就传送到P0口的引脚上。
例如:
-
控制信号为1,地址信号为0时,与门输出低电平,Vl管截止;
反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。如下图为控制信号为1,地址信号为0时的工作图:
地址信号经地址/数据线→反相器→V2场效应管栅极→V2漏极输出->P0。
-
控制信号为1、地址信号为1,与门输出为高电平,Vl管导通;
反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。如图为,控制信号为1,地址信号为1时的工作图:
2. P1口的结构及工作原理
P1口字节地址为90H,位地址为90H~97H。
与P0不同,P1口只能作为I/O口使用,无MUX,但其内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1、P2、P3都一样。
准双向I/O口。
(1)做I/O输入时,必须先将锁存器写为”1“
(2)在EEPROM编程和验证程序时,输入低8位地址。
3. P2口的结构及工作原理
P2口字节地址为A0H,位地址为A0H~A7H。
准双向I/O。
P2口比P1口多一个输出控制部分。
!!!(PS:网络来源部分图有问题)
1、作为I/O端口使用时的工作过程:
当没有外部程序存储器或虽然有外部数据存储器,但小于256B,即不需要高8位地址时(在这种情况下,不能通过数据地址寄存器DPTR读写外部数据存储器),P2口可以I/O口使用。
这时,“控制”信号为“0”,多路开关转向锁存器同相输出端Q(即向左接通),输出信号经内部总线→锁存器同相输出端Q→反相器→V2管栅极→V2管9漏极输出。
由于V2漏极带有上拉电阻,可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1”,使反相器输出低电平,V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后,输入信息经读引脚三态门电路到内部数据总线。2、作为地址总线使用时的工作过程:
P2口作为地址总线时,“控制”信号为‘1’,多路开关向地址线(即向右接通),地址信息经反相器→V2管栅极→漏极输出。
当系统中接有外部存储器时,P2口用于输出高八位地址,由于P2口输出高8位地址(A15~A8)。在外界程序存储器的系统中,P2口一般只作地址总线口使用,不再做I/O直接连外部设备。
与P0口不同,无须分时使用,因此P2口上的地址信息(程序存储器上的功数据地址寄存器高8位DPH保存时间长),无须锁存。
4. P3口的结构及工作原理
P3口字节地址为B0H,位地址为B0H~B7H。
准双向I/O。
P3口第二功能列表:
P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。
当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。
当处于第二功能时,锁存器输出Q=1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。
由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。
那么CPU是如何识别单片机的引脚有第二功能的呢?
答:单片机的第二功能是不需要人工干预的,也就是说只要CPU执行到相应的指令,就自动转成了第二功能。
七, I/O端口注意事项
(1)在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入/输出线。
(2)P0口作为通用双向I/O口使用时,必须外接上拉电阻。
(3)P3口除了作通用I/O口使用外,各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用I/O口使用。
(4)当P0~P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入1,使FET截止,然后再读端口引脚,例如以下程序:
MOV P1, #0FFH
MOV A, P1