第04讲:MCS-51单片机的并行IO口M
- 格式:pdf
- 大小:461.27 KB
- 文档页数:3
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
单片机技术
电气学院:易先军第02章:MCS-51单片机结构原理
RE:
●硬件编程结构及引脚[已介绍]
●CPU主要部件与特殊功能寄存器(SFR)[已介绍] ●片内外存储器的组织结构和编址[已介绍]
●并行I/O口【本次课内容!】
●中断及中断系统
●定时/计数器、串行口(外设)
4、MCS51单片机的并行I/O口
所谓并行I/O口,即各位的数据同时被输入或输出,它的最大特点是速度快。
(1)结构特点
MCS-51系列单片机的32根I/O线分为四个双向并行口P0~P3,每根I/O 线由一个锁存器(相当于特殊功能寄存器中的一位),一个输出驱动器(场效应管FET)和一个输入缓冲器(三态门)组成。
由于功能的不同,P0~P3各口的结构有所区别。
各锁存器由D触发器构成,在CPU“写锁存器”
信号的作用下,内部总线的数据写入D触发器。
两个三态门分别用来读锁存器或读引脚的信息。
P1、P2、P3口均有内部上拉电阻,而P0口的引脚是通过场效应管接到VCC。
显然,当P0口的上、下两只场效应管均关断时,引脚相当于“浮空”状态,即可作为高阻抗的输入端口(∴P0口为真正的双向口)。
P0、P2口的驱动器的输出与多路转换器MUX的状态有关,P3口的驱动器也与输出功能的类型有关,这些均为这些端口的多重作用创造了条件。
(2)输入功能
单片机有两种读一个端口的方法:读锁存器和读引脚。
①读锁存器:在CPU“读锁存器”信号的作用下,锁存器的
状态通过三态门送到内部总线,然后读到CPU中进行处理,而处理后的值将被重新写入锁存器。
能实现这种功能的指令称为“读—修改—写”指令,它们有:
ANL(逻辑与指令)
例如:ANL P1,A
ORL(逻辑或指令)
例如:ORL P2,A
XRL(逻辑异或指令)
例如:XRL P3,A
INC(增量指令)
例如:INC P2
DEC(减量指令)
例如:DEC P1
DJNZ(循环判跳指令)例如:DJNZ P2,LOOP JBC(位测试转移指令)例如:JBC P1. 1, LOOP MOV(位传送指令)
例如:MOV P1.3, C CPL(位取反指令)
例如:CPL P1.0
CLR (位清“0”指令)
例如:CLR P1.0
SETB(位置位指令)
例如:SETB P3.3
!读锁存器操作的共同点(特征):先读入并行I/O口锁存器中的内容,作一定的修改,然后再写入该口的锁存器中(读出—修改—写回)。
上述的后五条指令,属于位操作指令,实际上也是先要将8位锁存器的内容一起读入,再按指定位进行修改,然后再一起写入锁存器中。
②CPU“读引脚”信号时,接在该端口引脚的外部信号通过三态门读到内部总线,并送CPU处理,因而实现了数据的输入。
但必须注意,在读引脚时,该端口的锁存储器必须事先写“1”。
这是因为该端口既是输出端同时也是外部信号的输入端。
比如:假设该端口的状态此时为0,则驱动器的下方场效应管会导通,此时相当于输出“0”;如果有一外部输入信号是高电平且加到该引脚上,则该引脚会被强行箝拉到低电平,故造成读到CPU中的数据为“0”,同时也可能造成器件损坏!
而事先给锁存器写“1”,对于P0口,此时上、下两只场效应管均夹断,则构成高阻输入;对于P1、P2和P3口,此时的输出给拉成高电平,故其电平状态取决于外部信号。
(在复位时,各端口的锁存器均置成“1”!)
当单片机执行改变锁存器值的输出指令时,在该指令的最后周期的状态时,CPU 向锁存器产生出有效的“写锁存器”信号,将内部总线上的新值写入锁存器(即D 触发器) 。
P0口输出驱动器能驱动8个LSTTL 输入,P1、P2、P3口可驱动4个LSTTL 输入 。
(3)输出功能与负载能力
(4) 特殊功能
P0
口还起了数据总线和地址总线(低八位)的作用。
在进行正常的输
出(普通IO )时, “控制”端为“0”,多路转换器MUX 接在锁存器的Q 端。
此时上方的场效应管关断,下方的场效应管受锁存器的控制,P0口具有开漏输出,这时驱动外部电路时P0口需外加上拉电阻(上拉电阻的阻值取5.1K 或者4.7K ) 。
在CPU 进行外部存储器存/取时,P0口起数据总线或地址总线的作用,
“控制”端为“1”,多路转换器MUX 接反相器的输出端,即相当于接在“地址/数据”端。
当这个“地址/数据”为“1”时,上方的场效应管导通而下主的场效应管关断,P0.X 输出高电平,反之输出低电平。
这时P0口不需外接上拉电阻(作为总线用) 。
1)P0口(BUS ,数据/地址时分复用)
除了以上的输入、输出指令外,P0、P2、P3口还有其特殊的功能。
a )P0. X 结构图
在CPU 需要对外部存储器进行写操作时,“地址/数据”端应先送
出地址,然后在把要写的数据输出。
很显然,P0口的地址、数据是分时输出,这就是需要加入外部地址锁存器将先输出的地址锁存起来,地址锁存信号取自ALE 。
一般的情况下,P0口只在系统中用作总线,而不作为一般的I/O 口,因而P0口不外加上拉电阻。
与P0口类似,P2口除了作I/O 口之外,还作为地址总
线的高8位地址输出端。
在作为I/O 口用时,“控制”端为“0”,故多路转换器MUX 接在锁存器的Q 端,场效应管受锁存器的控制。
在作为地址总线输出 时,“控制”端为“1”,多路转换器MUX 接在“地址”端,故场效应管由“地址”端来控制,此时锁存器(P2的特殊功能寄存器SFR )的内容不变,在外部存储器读/写完毕时,P2口的地址输出的作用也结束,则“控制”端又变为“0”,P2口继续按锁存器原来的状态输出。
由于P2口在CPU 对外部存储器读/写过程中,始终能输出地址信号,所以P2的地址不需要外部锁存器的锁存。
2)P2口(地址高八位)
b )P2. X 结构图
3) P3口(第二功能)
P3口除了用作为一般I/O 口外,每一根线
都可以执行与口功能无关的第二种I/O 功能。
由图2-5可以看出,输出驱动器受控于锁存器的状态与第二输出功能的状态。
若要进行第二功能使用时,锁存器必须
先写入“1”,否则口线将被拉为0。
c )P3. X 结构图
P3口的第二功能有哪些?
d )P1. X 结构图
4)P1口只能做I/O (不具备第二功能)
强调!
说明:对P0~P3口 :
●1) 各个端口引脚在作输入口之前,都要先向对应的口寄存器中写“1”,不然不能作输入口用。
●2) P0口内部没有上拉电阻(其他都有),所以作通用IO 口用时为“开漏”输出,必须外加上拉电阻。
在作总线使用时不需要加上拉。
其他的口可加可不加。
(上拉电阻的阻值确定,5.1K 或者4.7K 都可以)。
●3) P3口作第二功能使用时,相应的口锁存器必须为 “1” 状态。
●4) 如果使用了外部存储器,不要再写P0口(外部存储器挂在P0口)。
本讲小结:
●读锁存器与读引脚的区别?
●为什么说P1、P2、P3是准双向口,而P0是真正的双向口?P0口用作I/O 使用时要外接上拉电阻吗?为什么? ●读引脚时,相应端口的锁存器如何处理?为什么?
●P3口用作第二功能时如何处理?第二功能具体指哪些? ●思考题。