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)
#include
#include
sbitRXD_IO=P3^0;
sbitTXD_IO=P3^1;
sbiTINT0_IO=P3^2;
sbiTINT1_IO=P3^3;
sbitT0_IO=P3^4;
sbitT1_IO=P3^5;
voidmain(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);
}
试验成果是:一切的接口都能像通用I/O口那样正常输出。实际上做了另一个试验,一切的接口也能正常读入。
定论:即便将P3接口设置成第二功用,可是榜首功用的通用I/O口功用依然存在。
试想,一个端口怎么可能一起有两种功用呢,可是试验成果如此,应当怎么解说?
一个合理的解说:一个端口不可能一起有两种功用,而上述试验定论仅仅给人的印象是“一起”。当单片机的
P3端口的第二功用翻开后,例如外部中止0,这个外设并不会一向检测是否有外部触发信号输入,而是在机器
周期内只在特定的时刻的时刻来检测,或者说只在特定的时刻履行这个第二功用,其他时刻并没有履行这个第
而功用,这样就可以作为榜首功用的一般I/O口来运用。
点评:51单片机这种多功用I/O口并不能很好的别离两种功用,在运用第二功用时,有可能会因为运用榜首功用
而与第二功用抵触,这是风险的。
单片机P0、P1、P2口在作为通用I/O口时被称为“准双向口”,为什么?
准双向口,指的是I/O口在作为输入时,因为上拉电阻的存在,它只能读入两种状况,“0”(低电平)和“非0”
(高电平),而不能像真实的双向I/O口那样能读入三种状况“0”(低电平)、“1”(高电平)和“Z”(高阻态)。
具体说来便是,假如给单片机I/O口不输入信号,这时它读入的是“1”(高电平),这在大多数情况下不能算作过错。
责任编辑;zl