打印
[51单片机]

AT89S52单片机P3口解惑

[复制链接]
488|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
functions|  楼主 | 2019-10-21 10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT89S52单片机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 (片外数据存储器 “写”选通控制输出)
                                                  P3.7 RD (片外数据存储器 “读” 选通控制输出)

P3接口相应接口线处于第二功能,应满足的条件:
                                                  (1) 串行I/0口处于运行状态(RXD、TXD)
                                                  (2)外部中断已经打开(INT0、INT1)
                                                  (3)定时器/计数器处于外部计数状态(T0、T1)
                                                  (4)执行读/写外部RAM的指令(RD、WR)

使用特权

评论回复

相关帖子

沙发
functions|  楼主 | 2019-10-21 10:45 | 只看该作者
但是,疑问是P3接口的一位接口线倘若处于设置成第二功能,是否就不能用作第一功能的通用I/O口呢?做以下实验:
#include <reg52.h>
#include <intrins.h>
sbit RXD_IO = P3^0;
sbit TXD_IO = P3^1;
sbit INT0_IO = P3^2;
sbit INT1_IO = P3^3;
sbit T0_IO = P3^4;
sbit T1_IO = P3^5;
void main(void)
{
SCON=0x50;      
ES=1;   
TMOD=0x55;
ET0 = 1;
TR0 = 1;
ET1 = 1;
TR1 = 1;
IT0=1;
EX0=1;
EA=1;

#progarm    //延时一段时间
RXD_IO = 0;
TXD_IO = 0;
INT0_IO = 0;
INT1_IO = 0;
T0_IO = 0;
T1_IO = 0;
while(1);
}

使用特权

评论回复
板凳
functions|  楼主 | 2019-10-21 10:45 | 只看该作者
实验结果是:所有的接口都能像通用I/O口那样正常输出。实际上做了另一个实验,所有的接口也能正常读入。

结论:即使将P3接口设置成第二功能,但是第一功能的通用I/O口功能仍然存在。

使用特权

评论回复
地板
functions|  楼主 | 2019-10-21 10:46 | 只看该作者
试想,一个端口怎么可能同时有两种功能呢,但是实验结果如此,该当如何解释?

一个合理的解释:一个端口不可能同时有两种功能,而上述实验结论只是给人的印象是“同时”。当单片机的

P3端口的第二功能打开后,例如外部中断0,这个外设并不会一直检测是否有外部触发信号输入,而是在机器

周期内只在特定的时刻的时刻来检测,或者说只在特定的时刻执行这个第二功能,其他时间并没有执行这个第

而功能,这样就可以当做第一功能的普通I/O口来使用。

使用特权

评论回复
5
functions|  楼主 | 2019-10-21 10:46 | 只看该作者
评价:51单片机这种多功能I/O口并不能很好的分离两种功能,在使用第二功能时,有可能会因为使用第一功能

而与第二功能冲突,这是危险的。

使用特权

评论回复
6
functions|  楼主 | 2019-10-21 10:47 | 只看该作者
单片机P0、P1、P2口在作为通用I/O口时被称为“准双向口”,为什么?

准双向口,指的是I/O口在作为输入时,由于上拉电阻的存在,它只能读入两种状态,“0”(低电平)和“非0”

(高电平),而不能像真正的双向I/O口那样能读入三种状态“0”(低电平)、“1”(高电平)和“Z”(高阻态)。

具体说来就是,如果给单片机I/O口不输入信号,这时它读入的是“1”(高电平),这在大多数情况下不能算作错误。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

446

帖子

1

粉丝