P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平 时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地 址接收。
P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作 为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用 于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在 给出地址“1”时,它利用内部上拉优势,当对外部八
位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程 和校验时接收高八位地址信号和控制信号。
P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。 当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉 为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1)
P3.4 T0(记时器 0 外部输入) P3.5 T1(记时器 1 外部输入)来~自^优尔论+文.网www.youerw.com/
P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3 口同时为闪烁编程和编程校验接收一些控制信号。
I/O 口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并 不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再 写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两 个三角形表示的就是输入缓冲器 CPU 将根据不同的指令分别发出读端口或读引脚信号以完 成不同的操作。这是由硬件自动完成的,不需要我们操心,然后再实行读引脚操作,否则 就可能读入出错,为什么看上面的图,如果不对端口置 1 端口锁存器原来的状态有可能为 0Q 端为 0Q^为 1 加到场效应管栅极的信号为 1,该场效应管就导通对地呈现低阻抗,此时 即使引脚上输入的信号为 1,也会因端口的低阻抗而使信号变低使得外加的 1 信号读入后
不一定是 1。若先执行置 1 操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中 实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类 I/O 口被称为准 双向口。89C51 的 P0/P1/P2/P3 口作为输入时都是准双向口。接下来让我们再看另一个问 题,从图中可以看出这四个端口还有一个差别,除了 P1 口外 P0P2P3 口都还有其他的功能。