您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第2章-4并行口单片机
CPU输入输出端口外部设备内总线MCS-51•并行I/O端口是实现单片机与外部进行并行数据交换的通道。2.4并行I/O口MCS-51单片机的并行端口具备三种工作方式1.通用I/O方式:直接与外部设备连接,实现数据的并行交换。常用于“最小系统”模式的设计;2.总线方式:当系统要与外部ROM、RAM或ADC等器件进行连接时,采用类似于微机系统的三总线结构进行设计,部分端口承担总线的功能。此时系统称为“扩展系统”;3.第二功能方式:由于引脚的限制,内部信号无法正常输入输出。因此借用I/O端口引脚作为内部信号通道也是一种不得已的方法。•当端口作为总线或第二功能时,就不能再做I/O。1.P0口【特点】具有两种工作方式1.“通用数据I/O双向端口”;2.“地址、数据复用总线”。P0口的位结构图DQ锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc硬件组成:1,一个输出锁存器(D型触发器);2,二个三态门(控制读引脚或读锁存器);3,与门和MUX等元件组成的输出控制电路;4,一对场效应晶体管FET构成的输出电路。P0口的工作原理1.普通I/O模式下的输出与输入原理;2.扩展(总线)方式下的工作原理。1.P0口的I/O操作(通用I/O端口)•在P0口作为通用I/O端口时,控制电路中的“控制”端为“0”电平:1.此时多路开关MUX接入下方的锁存器的/Q端。2.因与门的一个输入端为“0”,所以它使上端的FET截止。这就是P0口在做I/O口时输出为“漏极开路”结构的原因。输出时:D端=1→/Q=0→V1截止→P0.n=1D端=0→/Q/=1→V1导通→P0.n=0读引脚时:P0.n→读引脚三态门1→内部总线读锁存器时:Q端→读锁存器三态门2→内部总线•数据经内总线送到锁存器的“D”端,经“/Q”端送场效管应输出极。①总线送“0”时:锁存器的/Q=1,使下端的FET导通(上面的FET截止),端口呈现“0”电平;②总线送“1”时:锁存器/Q=“0”,使下端的FET截止,输出极的两个FET全部截止。在这种情况下,必须通过上拉电阻的作用使端口为高电平。(一)输出操作:MOVP0,A•输入操作实际上有两种①读引脚:用于真正的外部数据输入的通道;②读锁存器:在端口作输出时常使用的操作。a.读引脚:当外部信号通过端口引脚输入时,读引脚上的电平实现信号的输入。如指令:MOVA,P0;A←P0此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线。(二)输入操作MOVA,P0注意:读引脚操作前要事先向该端口写“1”请注意下面的一段程序:MOVP0,#0FFH;0FFH送P0(“写1”)MOVA,P0;从P0口引脚输入数据到A你能正确的分析出指令的操作吗?上述指令执行后P0=?b,读锁存器:端口作输出时的一种操作在这种情况下,读入的数据不是来自引脚,而是端口内部的锁存器的内容。P0.X单片机的引脚设计为输出时•当端口输出时(MOVP0,A),往往要再将前面输入的状态取回来,进行再处理然后重新输出。如:ORLP0,A将P0口前次输出的数据与累加器A的内容相“或”后在送回P0口(输出)。此时P0口的数据是从锁存器中读回的,而不是从引脚输入。•上述的过程也称之谓“读——修改——写”操作。为什么端口作输出时还要读入操作?•凡是这种“读—修改—写”操作,读到的数据都是锁存器的数据而不是读引脚数据。•这种“读—修改—写”的操作有:ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOVPx,y、CLRPx,y和SETPx,y。•而真正读引脚的指令只有MOVA,P0为什么要读锁存器而不去读引脚?•为什么“读——修改——写”操作不是从引脚回取信号?因为:1.引脚信号与外部设备连接,易受外界干扰;2.引脚上的电平往往不能正确反映前次的输出结果。负载Vcc2,P0口的地址/数据分时复用方式(控制端=1)“地址/数据”端无条件输入/输出,是严格意义上的双向口由于上部FET管不再被“控制”信号关闭,所以此时口线可以输出高电平,即不用外加上拉电阻。•只要CPU执行MOVX、MOVC(外ROM)指令,P0、P2口就自动变为数据/地址总线。•在进行硬件系统的设计中,如果使用了外部存储器时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口。1.做通用数据I/O端口并与MOS器件连接时,必须外接“上拉电阻”,否则不能正确的输出高电平;2.在输入操作前,必须先向端口“写1;3.“读引脚”与“读锁存器”是不同的两个数据通道;4.在总线方式时,P0口不能再做通用的I/O端口。它分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。P0口特点小结:单纯的通用I/O端口读锁存器内部总线写锁存器读引脚锁存器QDP1.nQVCCP1.n内部上拉电阻读锁存器内部总线写锁存器读引脚锁存器QDP1.nQVCCP1.n内部上拉电阻输出时:D端=1→/Q=0→V截止→P1.n=1D端=0→/Q=1→V导通→P1.n=0V21读引脚时:P1.n→读引脚三态门1→内部总线读锁存器时:Q端→读锁存器三态门2→内部总线2.P1口3.P3口P3.n=1个锁存器+2个三态缓冲器+1个第二功能控制单元+1个输出驱动单元锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻3412第二输入功能V锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻P3口具有通用IO口工作方式+第二功能方式输出时:D端=1→Q=1→V截止→P1.n=1D端=0→Q=0→V导通→P1.n=0读引脚时:P1.n→读引脚三态门1→内部总线(需先写1)读锁存器时:Q端→读锁存器三态门2→内部总线3412第二输入功能V第二输出功能=“1”(与非门开锁)P3口的第二功能方式:输出时:第二输出功能=1→与非门输出0→V截止→P3.n=1第二输出功能=0→与非门输出1→V导通→P3.n=0输入时:P3.n→驱动门4→第二输入功能(也需先使V截至)D端写“1”(与非门开锁)锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻锁存器QDP3.nQP3.n读锁存器内部总线写锁存器读引脚第二输出功能VCC内部上拉电阻3412第二输入功能VP3口第二功能定义引脚名称第二功能定义P3.0RXD串行通信数据接收端输入P3.1TXD串行通信数据发送端输出P3.2外部中断0请求端口输入P3.3外部中断1请求端口输入P3.4T0定时器/计数器0外部计数输入端口输入P3.5T1定时器/计数器1外部计数输入端口输入P3.6片外数据存储器写选通输出P3.7片外数据存储器读选通输入INT0WRINT1RD4.P2口锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关P2.n=1个锁存器+2个三态缓冲器+1个输出控制单元+1个输出驱动单元VP2口可以实现通用I/O口和地址输出口两种功能输出时:D端=1→Q端=1→V截止→P2.n=1D端=0→Q端=0→V导通→P2.n=0读引脚时:P2.n→读引脚三态门→内部总线(需要先写“1”)读锁存器:Q端→读锁存器三态门→内部总线P2作为通用I/O口时(控制端=0,MUX----Q)锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关V输出时:地址端=1→V截止→P2.n=1地址端=0→V导通→P2.n=0P2作为地址输出口时(控制端=1,MUX---地址)锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关锁存器QDP2.nQP2.n读锁存器内部总线写锁存器读引脚地址控制VCC内部上拉电阻MUX多路开关V1.直接做输出口P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51+5V例1:用80C51的P1口驱动8个发光二极管,使8个发光二极管由左向右轮流点亮。P0~P3并行口的基本用途P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51+5V例2:用80C51的P1口驱动1个数码管,制成1位秒表.abcdefgDpabcdefgDp2.直接做输入口P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51+5V例1:用80C51的P1口传送8个开关状态,用P2口显示8个开关状态。P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7+5V80C51+5V例2:用80C51的P1口驱动8个发光二极管,P3.4接一个开关K1,当开关按下时,8个发光二极管由左向右轮流点亮;开关断开时,8个发光二极管不亮。P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5VP3.43、可作为串行通信通道(例如,双机通讯的连接通道)4、可作为外部设备的连接通道(例如,存储器扩展通道)P0~P3小结1.结构2.功能B0HA0H90H80HSFR地址★第二功能★★总线端口★★★★准双向IO口P3P2P1P0★★★内部上拉电阻★★★输出控制★★MUX开关★★★★D锁存器P3P2P1P0端口小结P0口:8位,漏极开路的双向I/O口当外扩存储器及I/O接口芯片时,作低8位地址总线及数据总线的分时复用端口。作通用的I/O口时,需加上拉电阻。作为通用I/O输入,应先向端口写入1。P0口大多作为地址/数据复用口使用,就不能再作为通用I/O口使用。P1口、P2口、P3口均为准双向口。注意:准双向口与双向口的差别。准双向口仅有两个状态。而P0口作为总线使用,口线内无上拉电阻,处于高阻“悬浮”态。故P0口为双向三态I/O口。准双向I/O口则无高阻的“悬浮”状态。另外,准双向口作通用I/O的输入口使用时,一定要向该口先写入“1”。1.端口如果做输入口时,要注意什么?2.P0口做输出时,要注意什么?3.MCS-51的端口可以采用“拉电流”的方式输出较大的电流吗?4.写出P0、P1、P2和P3口在SFR中的地址。作业
本文标题:第2章-4并行口单片机
链接地址:https://www.777doc.com/doc-2154687 .html