请问51单片机P3口作为数据接收口时,书上写要先将口置1,不懂什么意思?请教 20
请问51单片机P3口作为数据接收口时,书上写要先将口置1,不懂什么意思?比方说我要把10101010发送给单片机,是只用刚开始时把那个口置1,还是每发送一个字节前都要置1...
请问51单片机P3口作为数据接收口时,书上写要先将口置1,不懂什么意思?比方说我要把10101010发送给单片机,是只用刚开始时把那个口置1,还是每发送一个字节前都要置1?那这8个字节岂不是要置八次1????我把遥控器配对的接收模块接在单片机学习板上,但是只要下载完程序,把数据口往上一接,单片机上的灯就乱闪,怎么回事?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit data0=P1^4;
sbit p1=P1^0;
sbit p2=P1^1;
sbit p3=P1^2;
sbit p4=P1^3;
sbit dula=P2^6;
sbit wela=P2^7;
uchar i,a0,a2,x0,a1,a,x1,y0,b,b1,b2,c,c1,c2,z0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=6;y>0;y--); //当z=3时,刚好184微秒
}
void main()
{
dula=0;
wela=0;
//data0=1; //数据输入打开!一会再换成data0试一试!
delay(20); //延时一下,防止读数据没读上。
do
{
a0=data0; //不断从P3^0口读数据
if(a0==0)
{
delay(3);
i++;
}
}
while(i<=10);
//下面是检测8位地址的程序
while(a2<=7)
{
do
{
a0=data0;
if(a0==1)
{
delay(1);
x0++;
}
a1++;
}
while(a1<=10);
if(x0>3)
{
x1=1;
a<<1;
a=a||x1;
a2++;
}
else
{
x1=0;
a<<1;
a=a||x1;
a2++;
}
} 展开
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit data0=P1^4;
sbit p1=P1^0;
sbit p2=P1^1;
sbit p3=P1^2;
sbit p4=P1^3;
sbit dula=P2^6;
sbit wela=P2^7;
uchar i,a0,a2,x0,a1,a,x1,y0,b,b1,b2,c,c1,c2,z0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=6;y>0;y--); //当z=3时,刚好184微秒
}
void main()
{
dula=0;
wela=0;
//data0=1; //数据输入打开!一会再换成data0试一试!
delay(20); //延时一下,防止读数据没读上。
do
{
a0=data0; //不断从P3^0口读数据
if(a0==0)
{
delay(3);
i++;
}
}
while(i<=10);
//下面是检测8位地址的程序
while(a2<=7)
{
do
{
a0=data0;
if(a0==1)
{
delay(1);
x0++;
}
a1++;
}
while(a1<=10);
if(x0>3)
{
x1=1;
a<<1;
a=a||x1;
a2++;
}
else
{
x1=0;
a<<1;
a=a||x1;
a2++;
}
} 展开
7个回答
展开全部
只要你输入,不管你输入的是0还是1,都要对P3(P2P1P0也一样)的相应位置1,这是单片机的内部结构决定的。这是单片机最基本的知识,建议你先看下单片机的输入输出。你要是P3口输入的话就要先输出:P3=0xff;
还有不建议你使用P3口,P3口有很多特殊定义引脚,如果你其他口还没使用的话建议使用其他口。
还有不建议你使用P3口,P3口有很多特殊定义引脚,如果你其他口还没使用的话建议使用其他口。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机标准双向I/O口,只有先给置1读出来的数据才准确,如果I/O口送0的话,无论怎么读都是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-06
展开全部
不用了吧 开发板初始都是外接高电平的 不用在置位了 ; 灯乱闪 是不是你程序出问题了俄
更多追问追答
追问
应该是程序出问题,但是程序都没有错误啊。那我写数据的话是不是直接往口里写就行了?
追答
你是用单片机C的话 可以直接往P3口写数据 不能直接往位写数据;
汇编不能直接写的;要寄存器寻址
我也是个初学者 希望能帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是在初始化的时候吧P3口置1,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询